(八)面向对象基础(二)
2018-06-18 02:41:45来源:未知 阅读 ()
# 父类class A(object): pass # 子类class B(A): pass
-
子类在继承的时候,在定义类时,小括号()中为父类的名字
-
父类的属性、方法,会被继承给子类
-
父类的私有属性,子类不会继承,不能直接使用
-
{is a:代表了继承关系,is前是子类;has a:代表了属性关系,a后面是属性}
# 父类class A(object): pass # 父类class B(object): pass # 子类class C(A,B): 子类继承多个父类
-
多继承可以继承多个父类,也继承了所有父类的属性和方法
-
注意:如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找)
-
多个父类中,不重名的属性和方法,不会有任何影响。
# super(子类名, self).__init__() # 执行父类的 __init__方法
这一行代码,可以调用也可以不调用,建议调用,因为__init__方法往往是用来对创建完的对象进行初始化工作,如果在子类中重写了父类的__init__方法,即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了,所以在以后的开发中,如果重写了父类的__init__方法,最好是先调用父类的这个方法,然后再添加自己的功能
私有权限:在属性名和方法名 前面 加上两个下划线 __
类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问; 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问; 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。
-
类方法一般和类属性配合使用,用于访问和修改类属性
class Dog(object): __type = "狗" def get_type(cls): # 类方法,用classmethod来进行修饰 @classmethod return cls.__type print(Dog.get_type())
使用场景:
-
当方法中 既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象 (如类属性、类方法、创建实例等)时,定义静态方法
-
取消不需要的参数传递,有利于 减少不必要的内存占用和性能消耗
class Dog(object): type = "狗" def __init__(self): name = None @staticmethod # 静态方法 def introduce(): # 静态方法不会自动传递实例对象和类对象 print("犬科哺乳动物,属于食肉目..") dog1 = Dog() Dog.introduce() # 可以用 实例对象 来调用 静态方法 dog1.introduce() # 可以用 类对象 来调用 静态方法
-
调用类方法:类名.类方法() 调用静态方法:类名.类方法()
-
cls:一般代表类对象
# 实例化一个单例class Singleton(object): __instance = None def __new__(cls, age, name): #如果类属性__instance的值为None, #那么就创建一个对象,并且赋值为这个对象的引用,保证下次调用这个方法时 #能够知道之前已经创建过对象了,这样就保证了只有1个对象 if not cls.__instance: cls.__instance = object.__new__(cls) return cls.__instance a = Singleton(18, "dongGe") b = Singleton(8, "dongGe") print(id(a)) print(id(b)) a.age = 19 #给a指向的对象添加一个属性 print(b.age)#获取b指向的对象的age属性
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python_0基础开始_day07 2019-08-13
- 【Python】语法基础 | 开始使用Python 2019-08-13
- Python之对象持久化笔记 2019-08-13
- Python基础总结之初步认识---class类的继承(终)。第十六天 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash