Python之类的讲解
1.构造函数:在实例化的时候,做一些类的初始化工作;
1 class Person(object): 2 #nationality是公有属性,是由类直接调用的 3 nationality="中国" 4 #__init__是构造函数,对类的进行初始化 5 def __init__(self,name,age): 6 #name,age是静态属性 7 self.name=name 8 self.age=age 9 #类的方法 10 def walk(self): 11 print("%s is walking" %self.name) 12 13 14 print(Person.nationality) 15 16 p=Person("edie",22) 17 p.walk() 18 19 #result 20 中国 21 edie is walking
2.
3.对于上图中,p去访问nationality的时候,等于是p在自己的内存中建立一个nationality这个变量;实例可以改变类变量;如果这时再建立另一个实例p1,则p1.nationality是不变的;
4.析构函数:在实例结束的时候,自动执行;
#del删除的是实例名,相当于删除的是房间号;
1 def __del__(self): 2 print("end")
5.私有属性和私有方法:__name(func)
1 class Person(object): 2 #nationality是公有属性,是由类直接调用的 3 nationality="中国" 4 #__init__是构造函数,对类的进行初始化 5 def __init__(self,name,age,heart): 6 #name,age是静态属性 7 self.name=name 8 self.age=age 9 #__heart是一个私有属性,私有属性只能在类内部用,不能实例调用; 10 self.__heart=heart 11 #类的方法 12 def walk(self): 13 self.__heart_jump(50) 14 print("%d is a number "%self.__heart) 15 print("%s is walking" %self.name) 16 #私有方法也是不能实例调用的,类的每一个方法都可以调用私有属性。类的功能函数也可以调用私有方法 17 def __heart_jump(self,__heart): 18 print("the number of %s is %d " %(self.name,self.__heart)) 19 20 21 22 print(Person.nationality) 23 24 p=Person("edie",22,50) 25 p.walk() 26 27 28 #result 29 中国 30 50 is a number 31 edie is walking
6.继承父类的构造方法的两种方式
1 class Man(Person): 2 3 def __init__(self,name,age,heart,salary): 4 #第一种方法,继承父类的构造方法 5 #Person.__init__(self,name,age,heart) 6 #第二种方法,继承父类的构造方法 7 super(Man,self).__init__(name,age,heart) 8 self.salary=salary 9 print(self.name,self.salary)
7.多态
class Animal(object):
def __init__(self,type):
self.type=type
def talk(self):
pass
@staticmethod
def animal_talk(obj):
obj.talk()
class Dog(Animal):
def talk(self):
print("wang")
class Cat(Animal):
def talk(self):
print("miao")
c=Cat("cat")
d=Dog("dog")
Animal.animal_talk(c)
浙公网安备 33010602011771号