![](https://images2017.cnblogs.com/blog/959053/201709/959053-20170911201414266-1106103026.png)
![](https://images2017.cnblogs.com/blog/959053/201709/959053-20170911205523282-1937596095.png)
# 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