Python 面相对象编程,类
# 类的 实例化, 以及继承。
# 把一个抽象的类变成一个具体的对象的过程, 叫实例化。
class Role(object): def __init__(self,name,role,weapon,life): self.name = name self.role = role self.weapon = weapon self.life = life def buy_weapon(self,weapon): self.weapon = weapon print("[%s] buy weapon [%s]" %(self.name,weapon)) def info(self): print(''' ------个人信息------- 姓名:%s 身份:%s 武器:%s 生命:%s --------------------- ''' %(self.name,self.role,self.weapon,self.life)) p1 = Role('jicki','警察','手枪',100) p2 = Role('luck','匪徒','机关枪',100) p1.info() p2.info() p1.buy_weapon('AK47') p2.buy_weapon('狙击枪') p1.info() p2.info()
打印结果:
------个人信息-------
姓名:jicki
身份:警察
武器:手枪
生命:100
---------------------
------个人信息-------
姓名:luck
身份:匪徒
武器:机关枪
生命:100
---------------------
[jicki] buy weapon [AK47]
[luck] buy weapon [狙击枪]
------个人信息-------
姓名:jicki
身份:警察
武器:AK47
生命:100
---------------------
------个人信息-------
姓名:luck
身份:匪徒
武器:狙击枪
生命:100
---------------------
1 # 类的继承 2 class ShoolMember(object): 3 def __init__(self,name,age,sex): 4 self.name = name 5 self.age = age 6 self.sex = sex 7 self.enroll() 8 9 def enroll(self): 10 print("[%s] 加入了学校" %self.name) 11 12 def tell(self): # 所有类 公有方法 13 print("大家好,我的名字叫[%s]" %self.name) 14 15 class Teacher(ShoolMember): #继承了 ShoolMember 类 16 def __init__(self,name,age,sex,coures,salary): # 重写 ShoolMember 父类的构造方法__init__ 17 super(Teacher,self).__init__(name,age,sex) # 新式类 的继承,继承了父类的__init__ 18 self.coures = coures 19 self.salary = salary 20 21 def teaching(self): # Tenacher 类 私有方法 22 print("[%s] 是教 [%s] 课程" %(self.name,self.coures)) 23 24 class Student(ShoolMember): #继承 ShoolMember 类 25 def __init__(self,name,age,sex,coures,tuition): # 重写 ShoolMember 父类的构造方法__init__ 26 super(Student,self).__init__(name,age,sex) # 新式类 的继承,继承了父类的__init__ 27 self.coures = coures 28 self.tuition = tuition 29 30 def pay_tuition(self): # Student 类 私有方法 31 print("[%s] 学习 [%s] 课程交了 [%s] 学费" %(self.name,self.coures,self.tuition)) 32 33 # 实例化 34 t1 = Teacher("alax",22,'F','Python',10000) 35 t2 = Teacher('wupeiqi',23,'F','Python',10000) 36 s1 = Student('jicki',22,'F','Python',6000) 37 38 t1.teaching() # 调用 Teacher 私有方法 39 s1.pay_tuition() # 调用 Student 私有方法 40 41 t1.tell() # 调用共用 方法 42 s1.tell() # 调用共用 方法 43 44 45 输出结果: 46 [alax] 加入了学校 47 [wupeiqi] 加入了学校 48 [jicki] 加入了学校 49 [alax] 是教 [Python] 课程 50 [jicki] 学习 [Python] 课程交了 [6000] 学费 51 大家好,我的名字叫[alax] 52 大家好,我的名字叫[jicki]
1 Python 多态: 2 多态性 允许子类类型的指针赋值给父类类型的指针。 3 多态的作用是什么? 4 我们知道,封装可以隐藏实现细节,使的代码模块化; 5 继承可以扩展已存在的代码模块(类); 6 封装与继承的目的都是为了 代码重用。 7 而多态则是为了实现 接口重用,多态的作用就是为了类的继承和派生的时候,保证能使用类的成员中任意类的实例的某一属性时的正确调用。 8 9 10 Python 是不支持多态的,可以使用如下方法实现: 11 12 class Animal(object): 13 def __init__(self,name): 14 self.name = name 15 16 def talk(self): 17 raise NotImplementedError("Subclass must implement") 18 19 class Cat(Animal): 20 def talk(self): 21 return 'miao, miao !' 22 23 class Dog(Animal): 24 def talk(self): 25 return 'wang wang !' 26 27 28 def animal_talk(obj): 29 print(obj.talk()) 30 31 d = Dog("WangCai") 32 c = Cat("BoSi") 33 34 animal_talk(c) 35 animal_talk(d) 36 37 38 输出结果: 39 miao, miao ! 40 wang wang !
类的成员可以分为三大类:字段,方法,属性 普通字段 字段: 静态字段 普通方法 类成员 方法: 类方法 静态方法 属性: 普通属性 一、字段: 字段包括: 普通字段 和 静态字段,他们在定义和使用中有所区别,本质区别是 内存中保存的位置不同。 普通字段属于 对象 (实例变量) 静态字段属于 类 (类变量) 类的装饰器: 1. @classmethod ,类方法, 不能访问实例变量。 2. @staticmethod, 静态方法, 既不能访问实例变量,也不能访问类变量。 3. @property, 把方法变成属性,调用不需要加()

浙公网安备 33010602011771号