类的方法、类的组合

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))

 

posted @ 2018-11-29 20:58  文昌  阅读(83)  评论(0)    收藏  举报