类函数
class A:
def __init__(self):
self.name = '123'
a =A()
a.name 123
class A:
def __init__(self,name,age):
self.name =name
self.age =age
a = A('123',24)
a.name 123
a.age 24
封装
class A(object):
def __init__(self,name):
self._name = name
def get_name(self):
returen self._name
def set_name(self,value):
self._name=value
a = A('Dog')
继承
class A(object):
def __init__(self,name):
self._name = name
def get_name(self):
returen self._name
def set_name(self,value):
self._name=value
def bark():
pass
class a1(A):
def bark():
print(self.get_name+'123')
a = a1('dog')
a.bark()
#继承父类的init方法,使用super
class a2(A):
def __init__(self,name,age):
super.__init__(name)
#super(A,self).__init__(name)
#A.__init__(self,name)
self._age = age
a = a2('dog',12)
a.name dog
多继承
一个子类继承多个父类
class A(object):
class B(object):
class a(A,B):
多态
同一个方法对不同对象产生不同效果
类方法和类属性
class A(object):
#类属性,定义在init方法前
owner = 'jack'
def __init__(self):
self.name = name
#类方法
@classmethod
def get_owner(cls):
return cls.owner
@classmethod
def set_owner(cls,value):
cls.owner = value
class A1(A):
#通过实例化引用类属性和类方法
a = A('dog')
a.owner
a.get_owner()
#直接通过类名调用
A.owner
A.get_owner()
#子类调用
A1.owner
A1.get_owner()
#通过类方法给类属性赋值
A.set_owner('cat')
静态方法
可以放在类外实现,但是跟类又有点关系的,可以使用staticmethod装饰,不需要参数或者cls
property装饰器
class A(object): #必须使用object
def __init__(self):
self._name = name
@property
def age(self):
return self._age
@age.setter
def age(self,value):
self._age = value
@age.delter
def age(self):
delte self._age
a = A()
a.age='cat'
a.age cat #将函数转为属性
del a.age