面向对像(1day)
# list # int # tuple #在python3中,所有的类都是新式类 # # class A:pass # print(A.__bases__) #python3中你不写都默认给你是继承object # # # # #在python2中,新式类 # class B(object):pass B继承object # class C(B):pass C继承B # # print(B.__bases__) # print(C.__bases__) # # # # #在python2中,经典类 # class D:pass # print(D.__bases__) # class Student: # country = 'China' # # def __init__(self, ID, NAME, SEX, PROVINCE):#__init__这函数下面不能有除了none以外的返回值 # self.id = ID # self.name = NAME # self.sex = SEX # self.province = PROVINCE # # def search_score(self): # print('tell score') # # def study(self): #self=s1 # print('study',self) #类的属性是:特征(变量)和技能(函数) #类的用法:实例化,属性引用 # s1 = Student('371818181818181', 'cobila', 'female', 'shanxi') #Student.__init__(s1,'371818181818181','cobila','female','shanxi')就等于上面的一行,但是这个函数不能有return # s1.id='371818181818181' # s1.name='cobila' # s1.sex='female' # s1.province='shanxi' # print(Student.country)这是引用类的变量 # print(Student.__init__) # print(Student.study) 这些都是函数加括号就能运行 # print(Student.search_score) 都是函数 # Student.__init__(s1,'371818181818181','cobila','female','shanxi')因为是函数,所以加括号就运行 # Student.study(s1) # Student.x=1 给类增加一个属性 # print(Student.x) # x=10000000 # print(Student.x)还是1,涉及到名字,跟命名空间有关,类相当于把一堆名字,包起来了 你要用,就必须类名.xx的方法来进行 # del Student.x 删除类的那个属性 # print(Student.x) # # print(Student.study) # del Student.study 删除类的属性 # print(Student.study)接下来就会报错 # Student.country='xxxxx' 改变类的属性 # print(Student.country) # class Struct:pass # Struct.x=1 # Struct.y=2 # Struct.res=Struct.x+Struct.y # print(Struct.res) 这嘛做的好处是,变量来自于类,跟外部的名字隔离, # class Student: # country = 'China' # # def __init__(self, ID, NAME, SEX, PROVINCE): # self.id = ID # self.name = NAME # self.sex = SEX # self.province = PROVINCE # # def search_score(self): # print('tell score') # # def study(self): #self=s1 # print('study',self) # # s1 = Student('371818181818181', 'cobila', 'female', 'shanxi') #对象也称为实例 #对象的属性:对象本身就只有特征(变量) #对的用法:属性引用 # print(s1.id,s1.name,s1.sex,s1.province) # s1.weight=100 # # weight=1111111111111111111111111111111111111111111111 # print(s1.weight) # # del s1.weight # # print(s1.weight) # # s1.id=123 修改 # print(s1.id) #类的名称空间与对象的名称空间 # x=123123123123 # class Student: # country = 'China' # # def __init__(self, ID, NAME, SEX, PROVINCE): # self.id = ID # self.name = NAME # self.sex = SEX # self.province = PROVINCE # # # def search_score(self): # print('tell score') # # def study(self): #self=s1 # print('study',self) # def walk(self): # print('name:%s is walking' %self.name) # # s1 = Student('371818181818181', 'cobila', 'female', 'shanxi') # s2 = Student('371818181sadf818181', 'cobilamei', 'femaleasfd', 'shasdfanxi') # # # # print(Student.__dict__) #查看类的名称空间,是一个字典 # # print(Student.country) 就是在类里面有没有一个country对应的value # # print(s1.__dict__)#查看对象的名称空间,是一个字字典 # # print(s1.id) # # s1.country="123123123" # # print(id(s1.country)) # # print(id(s2.country)) # # print(id(Student.country)) # # # print(s1.study,id(s1.study)) # print(Student.study,id(Student.study)) # #绑定方法的核心在于‘绑定’,唯一绑定一个确定的对象 # s1.walk() # s2.walk() class Riven: camp='Noxus' #所有玩家的英雄(锐雯)的阵营都是Noxus; def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54; self.nickname=nickname #为自己的锐雯起个别名; self.aggressivity=aggressivity #英雄都有自己的攻击力; self.life_value=life_value #英雄都有自己的生命值; def attack(self,enemy): #普通攻击技能,enemy是敌人; enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。 class Garen: camp='Noxus' #所有玩家的英雄(锐雯)的阵营都是Noxus; def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54; self.nickname=nickname #为自己的锐雯起个别名; self.aggressivity=aggressivity #英雄都有自己的攻击力; self.life_value=life_value #英雄都有自己的生命值; def attack(self,enemy): #普通攻击技能,enemy是敌人; enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。 #对象之间的交互 # r1=Riven('芮雯雯') # g1=Garen('草丛轮') # print(r1.life_value) # g1.attack(r1) # print(r1.life_value) # name=input('your nickname: ') # r1=Riven(name)
面向对像程序考虑的时候 #应用场景想清楚 #找不到共同特征和技能不用强求 #对象:学校----->归类 #共有的特征:商标为etiantian #共有的技能:招生 #独有的特征:地址不一样,老师们,课程 class School: tag='etiantian' def __init__(self,addr): self.addr=addr self.teacher_list=[] self.course_list=[] def zhaosheng(self): pass #对象:老师---->归类 #共同的技能:教课 #独有的特征:名字,性别,level,课程 class Teacher: def __init__(self,name,sex,level): self.name=name self.sex=sex self.level=level self.course_list=[] def teach(self): pass #对象:学生---->归类 #共同的特征: #共同的技能:search_score,handin #独有的特征:学号,名字,性别,课程 class Student: def __init__(self,ID,name,sex): self.id=ID self.name=name self.sex=sex self.course_list=[] def search_score(self): pass def handin(self): pass class Course: def __init__(self,name,price,period): self.name=name self.price=price self.period=period s1=Student('123123123123','cobila','female') # print(s1.id,s1.name,s1.sex) # print(s1.course_list) # s1.course_list.append('python') # s1.course_list.append('linux') # print(s1.course_list) python_obj=Course('python',15800,'7m') linux_obj=Course('linux',19800,'2m') s1.course_list.append(python_obj) s1.course_list.append(linux_obj) # print(s1.course_list) print('''student name is:%s course name is :%s course price is :%s ''' %(s1.name,s1.course_list[0].name,s1.course_list[0].price))
www.cnblogs.com/linhaifeng/articles/6182264.html