Python基础(9)——类

类的语法
类的定义
1 class Dog(object):
2  
3     print("hello,I am a dog!")
4  
5  
6 d = Dog() #实例化这个类,
7 #此时的d就是类Dog的实例化对象
8  
9 #实例化,其实就是以Dog类为模版,在内存里开辟一块空间,存上数据,赋值成一个变量名

  类的初始化

 1 class Dog(object):
 2  
 3     def __init__(self,name,dog_type):
 4         self.name = name
 5         self.type = dog_type
 6  
 7     def sayhi(self):
 8  
 9         print("hello,I am a dog, my name is ",self.name)
10  
11  
12 d = Dog('LiChuang',"京巴")
13 d.sayhi()

类的继承

 1 class SchoolMember(object):
 2     members = 0 #初始学校人数为0
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6  
 7     def  tell(self):
 8         pass
 9  
10     def enroll(self):
11         '''注册'''
12         SchoolMember.members +=1
13         print("\033[32;1mnew member [%s] is enrolled,now there are [%s] members.\033[0m " %(self.name,SchoolMember.members))
14      
15     def __del__(self):
16         '''析构方法'''
17         print("\033[31;1mmember [%s] is dead!\033[0m" %self.name)
18 class Teacher(SchoolMember):
19     def __init__(self,name,age,course,salary):
20         super(Teacher,self).__init__(name,age)
21         self.course = course
22         self.salary = salary
23         self.enroll()
24  
25  
26     def teaching(self):
27         '''讲课方法'''
28         print("Teacher [%s] is teaching [%s] for class [%s]" %(self.name,self.course,'s12'))
29  
30     def tell(self):
31         '''自我介绍方法'''
32         msg = '''Hi, my name is [%s], works for [%s] as a [%s] teacher !''' %(self.name,'Oldboy', self.course)
33         print(msg)
34  
35 class Student(SchoolMember):
36     def __init__(self, name,age,grade,sid):
37         super(Student,self).__init__(name,age)
38         self.grade = grade
39         self.sid = sid
40         self.enroll()
41  
42  
43     def tell(self):
44         '''自我介绍方法'''
45         msg = '''Hi, my name is [%s], I'm studying [%s] in [%s]!''' %(self.name, self.grade,'Oldboy')
46         print(msg)
47  
48 if __name__ == '__main__':
49     t1 = Teacher("Alex",22,'Python',20000)
50     t2 = Teacher("TengLan",29,'Linux',3000)
51  
52     s1 = Student("Qinghua", 24,"Python S12",1483)
53     s2 = Student("SanJiang", 26,"Python S12",1484)
54  
55     t1.teaching()
56     t2.teaching()
57     t1.tell()
View Code
Python3全是广度优先继承
Python2是经典类是深度优先、新型类是广度优先

多态

 1 class Animal(object):
 2     def __init__(self, name):  # Constructor of the class
 3         self.name = name
 4  
 5     def talk(self):              # Abstract method, defined by convention only
 6         raise NotImplementedError("Subclass must implement abstract method")
 7  
 8  
 9 class Cat(Animal):
10     def talk(self):
11         print('%s: 喵喵喵!' %self.name)
12  
13  
14 class Dog(Animal):
15     def talk(self):
16         print('%s: 汪!汪!汪!' %self.name)
17  
18  
19  
20 def func(obj): #一个接口,多种形态
21     obj.talk()
22  
23 c1 = Cat('小晴')
24 d1 = Dog('李磊')
25  
26 func(c1)
27 func(d1)
View Code

另一种更简便的形式

 1 class Animal(object):
 2     def __init__(self, name):  # Constructor of the class
 3         self.name = name
 4 
 5     def talk(self):  # Abstract method, defined by convention only
 6         raise NotImplementedError("Subclass must implement abstract method")
 7 
 8 ###该写成类内的形式
 9     @staticmethod
10     def func(obj):  # 一个接口,多种形态
11         obj.talk()
12 
13 class Cat(Animal):
14     def talk(self):
15         print('%s: 喵喵喵!' % self.name)
16 
17 
18 class Dog(Animal):
19     def talk(self):
20         print('%s: 汪!汪!汪!' % self.name)
21 
22 
23 
24 
25 
26 c1 = Cat('小晴')
27 d1 = Dog('李磊')
28 
29 Animal.func(c1)
View Code

猜你喜欢

转载自www.cnblogs.com/long5683/p/9301359.html