类名大写!!!
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两个
......
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/