面向对像(1day)
Posted wanchenxi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对像(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
以上是关于面向对像(1day)的主要内容,如果未能解决你的问题,请参考以下文章