python类

python-子类构造函数调用super().__init__()

时光毁灭记忆、已成空白 提交于 2019-11-27 22:11:51
【super作用】 如果子类(Puple)继承父类(Person)不做初始化,那么会自动继承父类(Person)属性name。 如果子类(Puple_Init)继承父类(Person)做了初始化,且不调用super初始化父类构造函数,那么子类(Puple_Init)不会自动继承父类的属性(name)。 如果子类(Puple_super)继承父类(Person)做了初始化,且调用了super初始化了父类的构造函数,那么子类(Puple_Super)也会继承父类的(name)属性。 来源: https://www.cnblogs.com/nuonuozhou/p/11379997.html

Python使用偏函数与类实现装饰器

时光怂恿深爱的人放手 提交于 2019-11-27 21:13:47
# -*- coding: utf-8 -*- # author:baoshan # python对某个对象是否能通过装饰器形式使用只有一个要求:decorator必须是一个可被调用的对象。 # 我们最熟悉的就是函数了 # 除函数之外,类也可以是callable对象,只要实现了__call__函数。 # 如下DelayFunc是一个实现了__call__的类,delay返回一个偏函数,在这里delay就可以作为一个装饰器 import time import functools class DelayFunc: def __init__(self, duration, func): self.duration = duration self.func = func def __call__(self, *args, **kwargs): print('Wait for {duration} seconds...'.format(duration=self.duration)) time.sleep(self.duration) return self.func(*args, **kwargs) def eager_call(self, *args, **kwargs): print('Call without delay') return self.func(*args, *

43 python - 定义类和创建对象

女生的网名这么多〃 提交于 2019-11-27 12:58:55
1.定义类 定义一个类,格式如下: class 类名 : 方法列表 demo:定义一个Car类 # 定义类 class Car : # 方法 def getCarInfo ( self ) : print ( '车轮子个数:%d, 颜色%s' % ( self . wheelNum , self . color ) ) def move ( self ) : print ( "车正在移动..." ) 定义类时有2种:新式类和经典类,上面的Car为经典类,如果是Car(object)则为新式类 类名 的命名规则按照"大驼峰" 2.创建对象 创建对象的格式为: 对象名 = 类名 ( ) 创建对象demo: # 定义类 class Car : # 移动 def move ( self ) : print ( '车在奔跑...' ) # 鸣笛 def toot ( self ) : print ( "车在鸣笛...嘟嘟.." ) # 创建一个对象,并用变量BMW来保存它的引用 BMW = Car ( ) BMW . color = '黑色' BMW . wheelNum = 4 #轮子数量 BMW . move ( ) BMW . toot ( ) print ( BMW . color ) print ( BMW . wheelNum ) 3.总结 1. BMW = Car()

第14课 python 类与对象2

偶尔善良 提交于 2019-11-27 02:48:40
类的继承 (多层,多重) 多层: Class A: pass Class B(A): ###(A) 继承,上可提及 pass a = B() ######实例化,B--->A 然后A ,最后B 的变量,方法 多重: Class A: pass Class B: pass Class C(A,B): pass a = C() #################优先使用C类的,然后A ,最后B 的变量,方法 今日就是这么简单。。。。。。。类我平时都无用。。。。哈哈。。。逻辑框架要清晰,有备无患 来源: https://blog.51cto.com/323248/2428786

python之描述符应用与类的装饰器

爷,独闯天下 提交于 2019-11-27 00:31:26
一、描述符应用 1.1上下文管理协议 在上文中我们提到with语句中的上下文管理器。with语句可以如此简单但强大,主要依赖于上下文管理器。那么什么是上下文管理器?上下文管理器就是实现了上下文协议的类,而上下文协议就是一个类要实现__enter__()和__exit__()两个方法。一个类只要实现了__enter__()和__exit__(),我们就称之为上下文管理器下面我们具体说下这两个方法。 __enter__() :主要执行一些环境准备工作,同时返回一资源对象。如果上下文管理器open("test.txt")的__enter__()函数返回一个文件对象。 __exit__() :完整形式为__exit__(type, value, traceback),这三个参数和调用sys.exec_info()函数返回值是一样的,分别为异常类型、异常信息和堆栈。如果执行体语句没有引发异常,则这三个参数均被设为None。否则,它们将包含上下文的异常信息。__exit_()方法返回True或False,分别指示被引发的异常有没有被处理,如果返回False,引发的异常将会被传递出上下文。如果__exit__()函数内部引发了异常,则会覆盖掉执行体的中引发的异常。处理异常时,不需要重新抛出异常,只需要返回False,with语句会检测__exit__()返回False来处理异常。

python 实现自定义切片类

五迷三道 提交于 2019-11-26 20:58:31
import numbers class Group: #支持切片操作 def __init__(self, group_name, company_name, staffs): self.group_name = group_name self.company_name = company_name self.staffs = staffs def __reversed__(self): self.staffs.reverse() def __getitem__(self, item): # 实现了这个魔法函数,就可以是可迭代对象 cls = type(self) # 使用相对编码,进行类型获取 if isinstance(item, slice): return cls(group_name=self.group_name, company_name=self.company_name, staffs=self.staffs[item]) elif isinstance(item, numbers.Integral): return cls(group_name=self.group_name, company_name=self.company_name, staffs=[self.staffs[item]]) def __len__(self): return len

Python 【类与对象】

北城以北 提交于 2019-11-26 20:39:14
类与对象 把类的个例就叫做实例 (instance),可理解为“实际的例子” 类是某个特定的群体,实例是群体中某个具体的个体 Python中的对象等于类和实例的集合:即类可以看作是对象,实例也可以看作是对象, 比如列表list是个类对象,[1,2]是个实例对象,它们都是对象 “万事万物,皆为对象” 类的创建和调用 类的创建 类名的首字母要大写 1 class Chinese: # 创建一个类 2 eye = 'black' 3 4 def eat(self): #参数self的特殊之处:在定义时不能丢,在调用时要忽略 5 print('吃饭,选择用筷子。') 6 7 wu = Chinese() # 类的实例化 8 print(wu.eye) # 实例调用类属性 9 wu.eat() # 调用类中的方法(传参不用管self) print(type(wu)) <class '__main__.Chinese'> #验证了wufeng属于Chinese这个类 print(wu) <__main__.Chinese object at 0x7f295682d400> #Chinese类的一个实例对象(object),后面的一串字符表示这个对象的内存地址 #类中创建的属性和方法可以被其所有的实例调用, 而且,实例的数目在理论上是无限的。 我们可以同时“新建”多个实例 类也被称为“实例工厂”

python隐藏类中的属性

浪尽此生 提交于 2019-11-26 20:12:02
方法一:   效果图一:   代码一: # 定义一个矩形的类 class Rectangle: # 定义初始化方法 def __init__(self,width,height): self.hidden_width = width self.hidden_height = height # 定义获取width、height的方法 def get_width(self): return self.hidden_width def get_height(self): return self.hidden_height # 定义修改width、height的方法 def set_width(self,width): self.hidden_width = width def set_height(self,height): self.hidden_height = height # 定义一个获取矩形面积的方法 def get_area(self): return self.hidden_width * self.hidden_height # 创建Rectangle的实例 r_one = Rectangle(3,4) # 输出打印 r_one的widh print(r_one.get_width()) # 输出 3 # 输出打印 r_one的area print(r_one.get

python 25 类的成员

删除回忆录丶 提交于 2019-11-26 14:32:55
目录 1. 类的私有成员 -- __ 1.1 类的私有静态属性 1.2 类的私有方法 1.3 对象的私有方法 2. 类的其他方法 2.1 类方法 @classmethod 2.2 静态方法 @staticmethod 3. 属性 @property 3.1 装饰器法 -- 获取、修改、删除 3.2 利用实例化对象的方式设置属性 4. 类的内置函数 4.1 isinstance -- 判断对象与类之间的关系 4.2 issubclass -- 判断类与类的关系 1. 类的私有成员 -- __ 当你遇到重要的数据,功能,(只允许本类使用的一些方法,数据)将其设置成私有成员. 1.1 类的私有静态属性 __name = "meet" # 加 __ #只能在类的内部进行访问、调用,在类的外部以及派生类不能调用。 1.2 类的私有方法 class A: def __func(self): print("in __func") # 只能在类的内部调用 1.3 对象的私有方法 class A: def __init__(self, name): self.__name = name # 只能在类的内部调用 # 总结: 类的私有成员,只能在类的内部进行访问、调用,不能在类的外部、子类使用。 python所有的私有成员都是纸老虎,形态虚设。 类在加载时,只要遇到类的私有成员(__)

Python抽象类和接口类

不打扰是莪最后的温柔 提交于 2019-11-26 11:53:17
zxq547 python定义接口继承类invalid syntax解决办法 1 2 3 4 5 6 7 class s_all(metaclass = abc.ABCMeta): #python2.7用此方法定义接口继承 # __metaclass__ = abc.ABCMeta @abc .abstractmethod def read( self ): pass pyhton2.7会报错,此方法用于python3+pyhton2.7应用次方法定义 1 2 3 4 5 6 7 class s_all(): #python2.7用此方法定义接口继承 __metaclass__ = abc.ABCMeta @abc .abstractmethod def read( self ): pass Python之抽象类、抽象方法 抽象类中只能有抽象方法,子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。 Python2 class CopyBase(object): def save(self): raise NotImplementedError class CopyPaper(CopyBase): def __init__(self): pass def save(self): print("copy paper") class CopyQuestion