类名大写!!!
class dog(object):

    def __init__(self,name):
        self.NAME=name

    def sayhi(self):
        print("hello, I am a dog.my name is:",self.NAME)
    def eat(self,food):
        print("%s is eating %s " %(self.NAME,food))

d = dog("abc")

d.sayhi()
d.eat("baozi")

##################
运行结果
hello, I am a dog.my name is: abc
abc is eating baozi

###################

类----》 实例化 --》实例对象

__init__构造函数
self.name = name # 属性,成员变量

def sayhi() #方法,动态属性

公有属性
私有属性
__private_attr_name = value

对外提供只读访问私有属性接口:
def get_nl(self):
    return self.__nl

        
强制访问私有属性:
r1_role_heart


类里直接定义的属性是公有属性
__init__中的属于成员属性


###############
析构方法,将del后的对象从内存中定期删除。
class dog(object):
   def __del__(self):
        print("del .... run ....")

r1 =dog('xxxx')         
del r1   
   
################
继承类

class person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.sex="normal"

    def talk(self):
        print("person is talking ....")

class blackperson(person):
    def __init__(self,name,age,strength):
        person.__init__(self,name,age)   ## 继承person的成员
        self.strength = strength
        print(self.name,self.age,self.sex)

    def walk(self):
        print("is walking ... %s" % self.sex)
    def talk(self):
        print("black person is talking....")

class whiteperson(person):
    pass


b = blackperson('dog',28,'week')

b.talk()
b.walk()


#######################

class SchoolMember(object):
    member = 0
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def enrool(self):
        print("just enrolled a new school member [%s]" % self.name)
        SchoolMember.member += 1
    def tell(self):
        print('----%s'% self.name)

    def tell(self):
        print("------info:%s" %self.name)
        for k,v in self.__dict__.items():
            print("\t",k,v)
        print("------end----")

    def __del__(self):   ##析构方法
        #print("kaichu [%s]" % self.name)
        SchoolMember.member -= 1

class Teacher(SchoolMember):
    def __init__(self,name,age,sex,salary,course):
        SchoolMember.__init__(self,name,age,sex)
        self.salary=salary
        self.course=course
        self.enrool()
    def teaching(self):
        print("Teacher [%s] is teaching [%s]" %(self.name,self.course))

    # def tell(self):
    #     print("""---info:%s
    #     name:%s
    #     age:%s
    #     salary:%s
    #     """ %(self.name,self.name,self.age,self.salary))


class Student(SchoolMember):
    def __init__(self,name,age,sex,course,tuition):
        SchoolMember.__init__(self,name,age,sex)
        self.course=course
        self.tuition=tuition
        self.enrool()
        self.amount=0

    def pay_tuition(self,amount):
        print("student [%s] has just paied [%s] "% (self.name,amount))
        self.amount=+amount

t1 =Teacher("cang",28,"FM",3000,'python')
s2 =Student("me",29,"M","sx",200)

print(SchoolMember.member)
# print (t1.member)
del s2
print(SchoolMember.member)

t1.tell()

print(t1.__dict__)  ##返回t1的所有参数{'name': 'cang', 'sex': 'FM', 'course': 'python', 'age': 28, 'salary': 3000}
print(s2.__dict__)

#################
经典类 vs 新式类
SchoolMember.__init__(self,name,age,sex) #经典类写法
super(Teacher,self).__init__(name,age,sex)  #新式类写法

class Person(object): #新式类写法,object是基类
class Person:   #经典类写法

新式类:广度查询,从左到右,先查找同级
经典类:深度查询,(python2)顺一条路径查到根部,找不到再从另一条路径深度查询,算是一个小bug

python3中不管经典类还是新式类都是广度查询。

#################
多继承
class SchoolMember(object):
   ......
class School(object):
   ......
   
class Teacher(SchoolMember,School):  ##继承SchoolMember,School两个
   ......
   

 
   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26735168/viewspace-2134733/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26735168/viewspace-2134733/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值