对象和类的关系:懒得说,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