python面向对象,类

1:类和对象

是面向对象中的俩个重要概念,类是对事物的抽象,比如人类,球类。对象是事物的实例,比如足球,篮球。球类可以对球的特征和行为进行抽象,然后可以实例化一个真实的球体出来。

2:类的定义

类把需要的变量和函数组合成一起,这种包含称为“封装”。。classA(object):

3:类的结构

class类名:

成员变量-属性              ## 类的属性是对数据的封装

成员函数-方法              ## 类的方法是对类的行为进行封装

类的创建:

class MyClass1(object):        ## 类名

color = ‘Black‘          ## 类的属性-变量

def fun(self):           ## 类的方法中必须有参数self,这是成员函数类的方法

print "I am function"

#!/usr/bin/pythonclass People():    color = ‘yellow‘             ## 成员变量    def think(self):             ## 成员函数        self.color = ‘Black‘     ## self表示类本身        print ‘I am a %s‘ % self.color        print ‘I am a thinker‘ren = People()                   ## 把类赋予一个变量,即实例化print ren.colorren.think()

4:类的属性

公有属性:在类中类外都可以使用。

私有属性:只能在类中使用,定义方式为__name(双下划线)

内置属性:由系统定义类的时候默认添加的,由前后双下划线构成。__dict__,__module__。

#!/usr/bin/pythonclass People():    color = ‘yellow‘    __age = 20    def think(self):        self.color = ‘Black‘        print ‘I am a %s‘ % self.color        print ‘I am a thinker‘        print self.__age   ## 私有函数,只能在类中使用ren = People()print ren.colorren.think()print ren._People__age     ## 仅测试使用,类外使用私有函数

5:类的方法相当于函数,类的属性相当于变量。

方法的定义跟函数一样,但是需要self作为第一个参数。

公有方法:跟公有属性一样,类内类外都可以使用

私有方法:跟私有属性一样,只能类内使用。__self

self:用来区分类跟方法,self本身表示类

类方法:被classmethod编译过的函数,能被类所调用,也能被对象调用(继承的关系)

静态方法:被staticmethod编译过的函数,可以被类直接调用,静态方法不需要设置self参数。

装饰器:

@classmethod:类方法

@staticmethod:静态方法

6:对象的创建

创建对象的过程称之为实例化:当一个对象被创建后,包含三个方面的特性:对象句柄,属性,方法。句柄用来区分对象。

对象的属性和方法与类中的成员变量和成员函数相对应

object=MyClass() ## 创建类的一个实例(对象),通过对象来调用方法和属性

#!/usr/bin/python# coding:utf-8class MyClass1(object):                   ## 类    color = ‘Yellow‘                      ## 类的属性--变量    __age = 20                            ## 类的私有属性,只能在类中使用    @classmethod    def __hide(self):                     ## 类的隐藏方法,只能在类中使用        print "I am hidemethods!"    @classmethod                          ## 装饰,对象和类都可以调用    def fun(self):                        ## 类的方法--函数        print self.__age                  ## self等同类,表示调用类的私有属性        print ‘This is function!‘    @staticmethod                         ## 装饰,对象和类都能调用,不需要self    def fun1():                           ## 不需要self        print MyClass1.color              ## 直接使用类调用类的属性或方法        MyClass1.__hide()                 ## 调用类的隐藏方法    class InsideClass(object):            ## 类中类,内部类        Inside = ‘Red‘                    ## 内部类的属性        @classmethod        def InsideFun(self):              ## 内部类的方法            print self.Insideobject = MyClass1()                       ## 对象,实例化类object.fun()                              ## 对象调用类的方法MyClass1.fun()                            ## 类调用类的方法MyClass1.fun1()object_inside = object.InsideClass()      ## 先调用外部类,再调用内部类MyClass1.InsideClass.InsideFun()          ## 调用内部类的方法print object_inside.Inside                ## 调用内部类的属性

7:内部方法(魔术方法)

def __str__(self):               ## 如果直接实例化类,会返回__str__的值,而不是提示这样<对象>

return "This is class object!"

构造函数

def __init__(self,c=‘Black‘):       ## 初始化对象的属性,但不会改变类的属性

self.color = c

析构函数

def __del__(self):                         ## 主要用于释放资源,一般执行与脚本的最后

#!/usr/bin/pythonclass PeoPle(object):    color = ‘Black‘    def __init__(self,c):                         ## 初始化属性,c需要在实例化类的时候,跟在后面        self.color = c        print "Init runinng ......"               ## 只要把类实例化成对象,就会打印这行,    def fun1(self):        print "Color is: %s" % self.colorpe = PeoPle(‘Red‘)print "Object print is: %s" %pe.color             ## __init__会影响对象的属性print "Class print is: %s" %PeoPle.color          ## 类不会受__init__的影响

类的继承:

单类继承

#!/usr/bin/pythonclass PeoPle(object):    color = ‘Black‘    def __init__(self,c):                   ## 初始化参数        self.color = c        print "Init runinng ......"    @classmethod                            ## 装饰方法,使其对象和类都可以调用    def fun1(self):        print "Color is: %s" % self.colorclass MyClass(PeoPle):                      ## 继承父类PeoPle      color = ‘MyClass‘    def __init__(self):        PeoPle.__init__(self.‘Red‘)         ## 表示继承父类的__init__构造函数。                          @classmethod    def fun1(self):       print "This is MyClass the function"    passmy=MyClass()                      ## 由于MyClass类中继承过PeoPle里的__init__参数。print MyClass.color               ## 优先返回MyClass里的属性my.fun1()                         ## 优先返回MyClass里的方法PeoPle.fun1()                     ## 返回PeoPle里的fun1方法MyClass.fun1()                    ## 返回MyClass里的fun1方法pe = PeoPle(‘Green‘)              ## 由于PeoPle初始化__init__那里需要俩个参数,所以这里要加一个参数print "Object print is: %s" % pe.color  ## 打印初始化后对象的属性即Greenprint "Class print is: %s" % PeoPle.color  ## 打印类属性即Black 

多类继承:

#!/usr/bin/pythonclass PeoPle(object):    def __init__(self):        self.dwell = ‘Earth‘        self.color = ‘Yellow‘    def think(self):        print "I dwell am %s!" % self.dwellclass Chinese(object):    color = ‘Black‘    def __init__(self):        self.dwell = ‘China‘    def think(self):        print "I am chinese %s " % self.colorclass MyClass(Chinese,PeoPle):       ## 默认首先继续第一个类的属性跟方法                        def __init__(self):         PeoPle.__init__(self)        ## 表示使用指定类的属性    passmy = MyClass()my.think()                           ## 返回I am Chinese Yellow

类的属性---总结

  • 类属性(公有属性): 可以在类中使用,相当于变量。
  • 类私有属性(私有属性): 只能函数中使用,无法被对象调用
  • 对象的公有属性: 对象可以调用
  • 对象的私有属性: 只能类中调用
  • 内置属性:
  • 函数的局部变量: 只能在本函数中使用
  • 函数的全局变量: 可以在类中所有的函数里使用
#!/usr/bin/python# coding:utf8val6 = "全局变量"print ‘*‘ * 50class My(object):    val1 = "类的公有属性 val1"    __val2 = "类的私有属性 __val2"    def fun(self):        self.val3 = "对象的公有属性 val3"        self.__val4 = "对象的私有属性 __val4"        val5 = "函数的局部变量,只能在本函数使用"        global val6        val6 = "函数的全局变量,可以在类中所有的函数中使用"    def fun1(self):        print val6my = My()print my.val1print my._My__val2my.fun()print ‘*‘ * 50my.fun1()

类的方法总结:

  • 公有方法:
  • 私有方法:
  • 类方法:
  • 静态方法:
  • 内置方法:
#!/usr/bin/python#-*- coding:utf8 -*_class MyClass(object):    name = ‘Warning‘    def __init__(self):        self.fun1()        self.__fun2()        self.fun3()        self.fun4()    def fun1(self):        print "%s %s" % (self.name,‘我是公有方法‘)    def __fun2(self):        print "%s %s" % (self.name,‘我是私有方法‘)    @classmethod    def fun3(self):        print "%s %s" % (self.name,‘我是类方法‘)    @staticmethod    def fun4():        print "%s %s" % (MyClass.name,‘我是静态方法‘)my = MyClass()my.fun1()                           ## 调用公有方法MyClass.fun3()                      ## 调用类方法MyClass.fun4()                      ## 调用静态方法,注意静态方法不需要self,与类方法的区别
时间: 2024-08-10 15:11:28

python面向对象,类的相关文章

python面向对象类

面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux内核.git.apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程:不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象就是把计算

python面向对象--类与对象

一.类与对象概念 1.面向对象的两个重要概念 1)类:共性事物的抽象,是对某一类具有共性事物的描述,是概念上的定义. 2)对象:是共性事物的一个体现,是这类事物的每个个体,或者说是类的一个实例 总结:类是对象的模板,对象是类的实例 2.类结构:里面包含属性和函数 3.数据是对象的状态-->成员变量(属性) 方法是对象的行为-->函数(方法) 二.类的语法 class Math: a = 4 #属性 b = 5 def add(self): #方法 c = self.a + self.b ret

python面向对象——类和对象

一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程(流水线式) 优点:极大的降低了程序的复杂度 缺点:应用场景固定住了,可扩展性差 2.函数式编程 特点: a.不修改外部传来值的状态 b.精简,可读性差 c.模仿数学里的函数 3.面向对象编程(是用来解决程序的可扩展性的) 优点:解决了程序的可扩展性 缺点:可控性差 二.面向对象设计与面向对象编程 1.面向对象设计 面向对象设计(Object oriented design):将一类具体事物的数据和动作整

Python面向对象-类成员

类的成员可以分为三大类:字段.方法和属性: 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份. (一)字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同 1 class Province: 2 # 静态字段 3 country = "China" 4 5 def __init__(self, name): 6 #

Python面向对象类成员特性

特性的存在就是将方法伪装成字段. property 把类方法当做普通字段去调用,即用对象调用的时候后面不用加括号 #!/usr/bin/env python # _*_coding:utf-8 _*_ class Foo:    @property    def Characteristic(self):        print("类方法的特性") # 创建一个对象 obj = Foo() # 调用类方法的时候方法后面不用加括号 obj.Characteristic 输出 /usr/

Python面向对象(类之间的关系)(三)

类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的. 随时可以更换另外一个东西来完成此操作 class Plant: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def da(s

python面向对象--类

1.类的概念:简单来说就是一组符合逻辑的参数或者是函数,一个种类.一个模型. 一个类中可以包含任意参数,并且可以定义任意个方法,但类并不是随意的将多个参数或者方法包含在class下,而是创建一个在事物之间具有逻辑链接的对象. 在python中class关键字定义一个类,在class中有def定义的函数,也就是类的方法. 2. 实例.实例化.对象 实例或叫对象: 根据模型制作出来的东西. 写法: 对象名/实例名 = 类名(参数-如果有) 实例化: 就是做东西的这个过程. 3.方法:类里面的函数 写

Python面向对象 | 类属性

property property是一个装饰器函数,可以将一个方法伪装成属性,调用的时候可以不用加().@property被装饰的方法,是不能传参数的,因为它伪装成属性了. 装饰器的使用:在要装饰的函数.方法.类上面一行加上 @装饰器名字 装饰器的分类: 装饰函数 装饰方法:property 装饰类 例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解) 成人的BMI数值: 过轻:低于18.5 正常:18.5-23.9 过重:24-27

Python面向对象 类的空间问题

一.Python 类的空间问题 1.1 何处可以添加对象属性 class A: def __init__(self,name): self.name = name def func(self,sex): self.sex = sex # 类外面可以: obj = A('meet') obj.age = 18 print(obj.__dict__) # {'name': 'meet', 'age': 18} # 类内部也可以: obj = A('meet') # __init__方法可以. obj

Python面向对象—类属性和实例属性

属性:就是属于一个对象的数据或函数元素 类有类方法.实例方法.静态方法.类数据属性(类变量)和实例数据属性(实例变量). 类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改. 实例属性:包括实例方法和实例变量 class MyClass(object): name = 'Anl' def __init__(self, age): self.age = age @classmethod def class_method(cls): print "I'm class method&