class Room:
tag = 1
def __init__(self,name,ren,chang,kuang,gao):
self.name = name
self.ren = ren
self.chang = chang
self.kuang = kuang
self.gao = gao
@property # 静态属性 封装逻辑让用户感知不到调用
def mian_ji(self):
return self.chang*self.kuang
@classmethod # 类的方法 为了类去调用,实例也可以调用
def tell_info(cls):
print(cls)
print(cls.tag)
# def tell_info(self):
# print("--->",self.tag)
@staticmethod # 静态方法 类的工具包,不和实例、类绑定 类、实例均可调用
def xi_zao(a,b,c):
print("%s %s %s正在洗澡"%(a,b,c))
def test(self): # 类可调用,实例不可调用
print("123")
r1 = Room("厕所","lei",10,10,100)
r2 = Room("公共","li",2,2,10)
print(r1.mian_ji) # 100
print(r2.mian_ji) # 4
Room.tell_info()
# <class '__main__.Room'>
# 1
Room.xi_zao(1,2,3) # 1 2 3正在洗澡
r1.xi_zao(1,2,3) # 1 2 3正在洗澡
# 组合
class Foot:
pass
class Trunk:
pass
class Head:
pass
class Person:
def __init__(self,id_num,name):
self.id_num = id_num
self.name = name
self.foot = Foot()
self.trunk = Trunk()
self.head = Head()
p1 = Person("123","lei")
print(p1.__dict__)
class School:
def __init__(self,name,addr):
self.name = name
self.addr = addr
class Course:
def __init__(self,name,price,period,school):
self.name = name
self.price = price
self.period = period
self.school = school
s1 = School("oldboy","北京")
s2 = School("oldboy","南京")
# c1 = Course("python",10,"20h","oldboy 北京")
c1 = Course("python",10,"20h",s1)
print(c1.school.name) # oldboy
msg ='''
1 老男孩 新校区
2 老男孩 南京校区
'''
print(msg)
while True:
menu = {
"1":s1,
"2":s2
}
choice = input(">>>:")
school_obj = menu[choice]
name = input("课程名>>>:")
price = input("费用>>>:")
period = input("时间>>>:")
new_course = Course(name,price,period,school_obj)
print("课程 %s 属于 %s 学校" %(new_course.name,new_course.school.name))