首页 > 其他 > 详细

Day 5-补充

时间:2018-06-30 15:19:43      阅读:173      评论:0      收藏:0      [点我收藏+]

类的继承于查找顺序:

在py2中,不继承object的类为经典类,经典类继承查找:深度优先.

在py3中,默认继承object,所以python3中都是新式类,新式类的继承查找:广度优先.

类的特殊属性:

类名.__name__# 类的名字(字符串)
类名.__doc__# 类的文档字符串
类名.__base__# 类的第一个父类(在讲继承时会讲)
类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
类名.__dict__# 类的字典属性
类名.__module__# 类定义所在的模块
类名.__class__# 实例对应的类(仅新式类中)

class People:
    """
    我是文档
    """
    country=China
    x=1
    def run(self):
        """
        我也是文档
        :return:
        """
        print(----->, self)

# 实例化出三个空对象
obj1=People()
obj2=People()
obj3=People()

# 为对象定制自己独有的特征
obj1.name=egon
obj1.age=18
obj1.sex=male

obj2.name=lxx
obj2.age=38
obj2.sex=female

obj3.name=alex
obj3.age=38
obj3.sex=female


print(People.__doc__)       # 类中的说明文档
# 我是文档

print(obj1.run.__doc__)     # 类中方法的说明文档

#我也是文档
#        :return:
print(People.__name__)      # 类的名字,返回是一个字符串
#People
print(People.__bases__)     # 类继承的父类
# (<class ‘object‘>,)
print(People.__dict__)      # 类的字典属性
#{‘__module__‘: ‘__main__‘, ‘__doc__‘: ‘\n    我是文档\n    ‘, ‘country‘: ‘China‘, ‘x‘: 1, ‘run‘: <function People.run at 0x0000000002A2D840>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘People‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘People‘ objects>}
print(People.__module__)    # 类定义所在的模块
# __main__
print(People.__class__)     # 实例对应的类(仅新式类,默认type类)
# <class ‘type‘>

 

 

 

组合与继承都是有效地利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同,

 

1.继承的方式

 

通过继承建立了派生类与基类之间的关系,它是一种‘是‘的关系,比如白马是马,人是动物。

 

当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如老师是人,学生是人

 

2.组合的方式

 

组合的方式建立了类与组合的类之间的关系,它是一种‘有’的关系,比如教授有生日,教授教python和linux课程,教授有学生s1、s2、s3...

 

 

 

 

 

 

Day 5-补充

原文:https://www.cnblogs.com/lovepy3/p/9096719.html

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