Python基础---面向对象

对象和类的关系:懒得说,Java中接触的头疼
定义类:
        class 类名:
               属性列表
               方法列表
创建对象:
                 对象名 = 类名()
属性:私有化在属性前加    __ ==java 的 private
方法:定义关键字  def
        注意:类定义的方法至少有一个参数,一般以self变量作为该参数,且作为第一个参数
                           对比java中 this 理解
构造器
        构造器"方法,的格式如下:  === java 的 构造方法
                def __init__( 参数s):
        创建对象后,主动调用
析构  
        创建对象时,默认调用构造方法
        删除对象时,默认调用析构方法
            析构方法(__del__())

class Animal():
    # 构造方法
    def __init__(self):
        print ('---构造方法被调用---')

    # 析构方法
    def __del__(self):
        print ('---析构方法被调用---')

# 创建对象
dog = Animal()

# 删除对象
del dog

继承  不多说了
        class 子类(父类):

多继承  一个子类还几个父类   有点乱吧     java只有单继承

# 定义一个父类
class A:
    def printA(self):
        print '----A----'

# 定义一个父类
class B:
    def printB(self):
        print '----B----'

# 定义一个子类,继承自A、B
class C(A,B):
    def printC(self):
        print '----C----'

obj_C = C()
obj_C.printA()
obj_C.printB()

                              父类中有同名的方法,按照继承顺序执行

多态     定义时的类型和运行时的类型不一样
            一般是 参数类型,参数个数
类方法和静态方法:
    1.类方法:类对象所拥有的方法,需要用修饰器@classmethod来标识
            操作类对象=== Java  generator setter and  getter
            X.第一个参数必须是类对象,一般以cls作为第一个参数
            X.类方法可以对类属性进行修改

class people:
    country = 'china'

    #类方法,用classmethod来进行修饰
    @classmethod
    def getCountry(cls):
        return cls.country

    @classmethod
    def setCountry(cls,country):
        cls.country = country


p = people()
print (p.getCountry()    )#可以用过实例对象引用
print (people.getCountry())    #可以通过类对象引用

p.setCountry('japan')   

print (p.getCountry()   )
print (people.getCountry())


    2.静态方法:需要修饰器@staticmethod来进行修饰,静态方法不需要多定义参数

class people:
    country = 'china'
    
    @staticmethod
    #静态方法
    def getCountry():
        return people.country
    
print (people.getCountry())

总结:
        1.类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;
        2.实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性,        相同名称的类属性和实例属性,实例属性优先级更高。
        3.静态方法不需要额外定义参数,必须通过类对象来引用静态方法===java  static
 

猜你喜欢

转载自blog.csdn.net/JinChao94/article/details/84790085