定义class
Class Student:
name = ''
score = 0
def print_score(self):
print(self.name, self.score)
构造实例
S = Student
S.print_score()
通过定义一个特殊的__init__方法,静态绑定属性
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print(self.name, self.score)
#创建学生对象
tom = Student('Tom', '59')
tom.print_score()
实例动态绑定属性和方法
动态给实例绑定属性
s.name = “Tom”
动态给实例绑定方法
定义一个方法
Def set_age(self, age):
self.age = age
From types import MethodType
s.set_age = MethodType(set_age, s)
S.set_age(25)
给一个实例绑定的方法,对另一个实例是不起作用的,为了使对所有的实例都起作用,需要在class定义时绑定静态方法。
__slots__变量
__slots__变量定义于class中,用于限制该class的实例能动态添加的属性
class Student(object):
__slots__ = ('name','age')
__slots__变量的作用范围只针对当前类,不针对当前类的子类。
变量名如果以__开头,就变成了一个私有变量,只有内部可以访问
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
如果强制从外部赋值的话,会新增一个__name变量,该变量与class内部的__name变量不是同一个。
继承
class Animal(object): //动物
pass
class Mammal(Animal): //哺乳动物
pass
class Bird(Animal): //鸟类
pass
多重继承
通过多重继承,一个子类就可以同时获得多个父类的所有功能。
class Animal(object): //动物
pass
class Mammal(Animal): //哺乳动物
pass
class Bird(Animal): //鸟类
pass
class Runnable(object)://会跑的
def run(self):
print('Running...')
class Flyable(object): //会飞的
def fly(self):
print('Flying...')
class Dog(Mammal, Runnable):
pass
python中,形如__xxx__的表示变量或者函数具有特殊用途。
下文几种常用的定制方法:
__main__
__init__
__str__
__iter__
__getitem__
__getattr__
__call__