python 类

# -*- coding: utf-8 -*-
'''
构造函数的作用是初始化实例变量
析构函数作用是实例销毁的时候调用, 可以在析构函数中做 关闭连接等操作

类中的方法必须有一个self 的参数, 掉用类方法的本质是:类.方法(实例):
比如: p1.sayName() => people1.sayName(p1)



'''

'''
简单的类
'''


class people1:
    #类变量 , 类没有实例化的时候就可以调用
    n=123 
    list=[]
    #构造函数
    def __init__(self,name,sex):
        #实例变量(静态属性),作用域是实例本身
        self.name = name
        
        #设置私有属性
        self.__sex = sex
        
    def getSex(self):
        return self.__sex
    #类方法(动态属性)
    def sayName(self):
        print("my name is :" ,self.name)


    def __del__(self):
        print("call del -- ")
        pass


#在类初始化之前可以调用类变量
print(people1.n)

#实例化生成一个对象
p1 = people1("xiaoQiang","man")
p1.sayName()

p2 = people1("wangcai","woman")
#为 实例添加一个属性
p1.age = 25
print(p1.age)

print(p1.getSex())

#删除一个属性
# del p1.age
# print(p1.age)



#实例中也可以调用类变量,
#修改类变量在本实例中显示修改, 而在其他实例中没有被修改,其实本质就是在实例中添加一个属性 n
#如果类属性是一个list 类型, 那么在p1中修改,在其他实例中也会发生改变
# p1.n=456
print(p1.name,p1.n)
p1.list.append("aaa")
print(p2.list)

 

 

多继承:

# -*- coding: utf-8 -*-

'''
经典类
class A:
    pass
    
    
新式类:
class B(object):
    pass
    
新式类与经典类的一个差别就是多继承的时候(python2) , 新式类是按照广度优先进行继承, 经典类是按照深度优先进行继承
python3 都是按照广度优先进行继承
'''


class People(object):
    def __init__(self,name):
        self.name = name
    
    def eat(self):
        print("%s eating----"% self.name)
        
    def sleep(self):
        print("%s sleep----"% self.name)
      
class Relation(object):   
    def __init__(self):
        pass
    
    def makeFriends(self,obj):
        print("%s make Friend---%s" %(self.name , obj.name))



        
class Man(People,Relation):
    def __init__(self,name,sex):
        super(Man,self).__init__(name)
        self.sex = sex
    

class Woman(People,Relation):
    def __init__(self,name,sex):
         super(Woman,self).__init__(name)
         self.sex = sex
    
    
m1 = Man("xiaoQiang","Man")
w1 = Woman("ruhua","Woman")
m1.makeFriends(w1)

 

posted on 2017-11-21 09:37  gaizhongfeng  阅读(163)  评论(0编辑  收藏  举报