类是由一系列属性和方法组成
对象的创建就是类实例化的过程
三个特性:
1.对象的句柄,区分不同的对象
2.属性:
共有属性
类属性(共有的属性分离出来):它属于类,也属于对象,建议使用类调用
实例属性:它只属于对象
局部变量
私有属性
3.方法
构造函数:一个类,不管是否写了构造函数,它都是有构造函数的
一个类,可以有多个构造函数,建议一个类只有一个构造函数
1.初始化属性
析构函数:对象实例化——>构造函数——>对象调用方法——>代码跳转到具体的方法——>执行方法的代码块——>析构函数
特性方法:
class Person(object):
@property
def getUserID(self):
pass
per = Person()
per.getUserID
'''
静态方法:直接使用类名来进行调用,它属于类
对象也可以调用静态方法,但是一般不建议这样做
'''
class Person(object):
@staticmethod
def conn():
pass
Person.conn()
'''
类方法:直接使用类来进行调用,属于类
'''
class Person(object):
@classmethod
def conn(cls):
pass
属于类:类属性、静态方法、类方法
属于对象:实例属性、普通方法、特性方法
'''类属性的继承'''
class Person(object):
china = u'地球'
class UsaPerson(Person):
pass
per = UsaPerson()
per.china
'''实例属性的继承和继承的两种写法'''
class Fruit(object):
def __init__(self,name):
self.name = name
class Apple(Fruit):
def __init__(self,name,brand,color):
Fruit.__init__(self,name)或者 super(Apple,self).__init__(name)
self.brand= brand
self.color = color
def info(self):
print u"名称:",self.name + u"品牌:",self.brand + u'颜色:',self.color
apple = Apple(u'苹果',u'品牌',u'红色')
apple.info()
class Fruit(object):
def __init__(self,name):
self.name = name
'''子类由于业务的需求,不需要继承父类的实例属性'''
class Apple(Fruit):
def __init__(self,brand,color):
self.brand= brand
self.color = color
def info(self):
print u"品牌:",self.brand + u'颜色:',self.color
apple = Apple(u'品牌',u'红色')
apple.info()
'''方法的继承'''
class Fruit(object):
def eat(self):
print u'水果可以吃的'
class Apple(Fruit):
pass
apple = Apple()
apple.eat()
子类为什么重写父类的方法:子类有自己的特性
当子类重写了父类的方法,对子类进行实例化后,子类调用的方法(父类、子类都存在),执行的方法是子类的方法
class Fruit(object):
def eat(self):
print u'水果可以吃的'
class Apple(Fruit):
def __init__(self,color):
self.color = color
def eat(self):
print u'颜色是'+self.color +u'的时候可以吃'
apple = Apple(u'红色')
apple.eat()