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)
posted @ 2016-12-08 19:41  dudujing  阅读(40)  评论(0)    收藏  举报