首页 > 其他 > 详细

16 静态 组合 继承

时间:2019-02-27 21:15:25      阅读:158      评论:0      收藏:0      [点我收藏+]
class Room:
    tag = 12
    def __init__(self,name,owner,width,length,heigh):
        self.name = name
        self.owner = owner
        self.width = width
        self.length = length
        self.heigh = heigh
    @property
    def cal_area(self):
        print(%s住的%s总面积是%s%            (self.owner,self.name,self.width * self.length))
        return self.width * self.length
    @classmethod
    def tell_info(cls,x):
        print(cls)
        print(------->,cls.tag)
        print(x)
    @staticmethod
    def wash_body(a,b,c):
        print(%s正在洗澡%a)
#静态方法:
# r1 = Room(‘厕所‘,‘alex‘,100,100,100000)
# r2 = Room(‘公共厕所‘,‘AA‘,1,1,1)
# print(r1.cal_area) #加 property之后可执行函数 静态属性
# print(r2.cal_area)
# r1.cal_area()
#类方法
# Room.tell_info(10) #实例也可以用
#静态方法 名义上属于类管理 实际上不可调用类属性和实例属性
Room.wash_body(AA,BB,CC)
r2 = Room(公共厕所,AA,1,1,1)
r2.wash_body(a,BBB,CCC)

# print(Room.__dict__)

 

#总结
# 静态属性:函数作为数据属性形式 调用时感受不到内在逻辑
# 既可以访问实例属性 也可以访问雷属性
# 类方法:可以访问数据属性 也可以访问函数属性
# 但是不可以访问实例属性
# 静态方法:不能访问类属性 也不能访问实例属性

子类:

class School:
    def __init__(self,name,addr):

class Course:
    def __init__(self,name,price,period,school):

c1 = Course(linux,10dollor,1 h,s1)
print(c1.__dict__)
print(c1.school) #打印内存地址

while True:
    menu ={
                1:s1,
                2:s2,
                3:s3
                }
    choice = input(>>: )
    school_obj = menu[choice]
    name = input(namae:)
    price = input(‘‘)
    new_course = input()
    print(课程[%s]属于[%s]学校%(Course,School))

 

#low 比解决方案
class Course:
    def __init__(self,name,price,period,school):
class School:
    def __init__(self, name, addr):
#...
self.name = name
self.Course_list = []
s1.Course_list.append(c1)
s1.Course_list.append(c2)
for Course_obj in s1.Course_list:
    print(Course_obj.name)

 

面向对象的三大特征:继承 多态 封装
类的继承:
class Pclass1:

class Pclass2:

class SubClass(Pclass1):

子类继承父类所有属性 但若重名 并不改变父类属性
当类显著不同 且较小类是较大类所需组件 用组合比较好
当有很多相同特征 提取相同功能做基类 用继承

含义2 某子类兼容于某基类 定义一个接口类 子类继承接口类
并且继承接口中定义的方法

MRO列表的构造遵循三条准则:
1 子类会优先于父类被检查
2 多个父类会根据他们在列表总的顺序被检查
3 如果对下一个类存在两个合法的选择 选择第一个父类

新式类:广度优先 python3
经典类:深度优先 python2

16 静态 组合 继承

原文:https://www.cnblogs.com/louzhiyuan/p/10446855.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!