python类

Python类的继承

女生的网名这么多〃 提交于 2019-12-29 08:05:32
基本概念 面向对象三要素之一:继承inheritance。人类和猫类都是继承自动物类。 个体继承自父母,继承了父母的一部分特征,但也可以有自己的个性。在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样可以减少代码,多复用。子类可以定义自己的属性和方法。 先看一个不用继承的例子: class Animal: def shout(self): print("Animal shouts") a = Animal() a.shout() class Cat: def shout(self): print("cat shouts") c = Cat() c.shout() 结果为: Animal shouts cat shouts 上面的两个类虽然有关系,但是定义时并没有建立这种关系,而是各自完成定义。 动物类和猫类都有吃,但是它们的吃有区别,所以分别定义。 class Animal: def __init__(self,name): self._name = name def shout(self):#一个通用的吃方法 print("{} shouts".format(self.__class__.__name__)) @property def name(self): return self._name a = Animal("monster") a.shout()

Python 入门 之 类成员

▼魔方 西西 提交于 2019-12-27 17:50:30
1、类的私有成员: 私有: 只能自己拥有 以 __ 开头就是私有内容 对于每一个类的成员而言都有两种形式: - 公有成员,在任何地方都能访问 - 私有成员,只有在类的内部才能使用 私有成员和公有成员的访问限制不同: 静态字段(静态属性) - 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问 - 私有静态字段:仅类内部可以访问; 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 零基础到项目实战,7天学习上手做项目 class Human: live = "有思想" # 类公有的属性 __desires = "有欲望" # (程序级别)类私有的属性 _desires = "有欲望" # (程序员之间约定俗成)类私有的属性 def __init__(self,name,age,sex,hobby): self.name = name self.age = age self.sex = sex # 对象的公有属性 self.__hobby = hobby # 对象的私有属性 def func(self): # 类内部可以查看对象的私有属性 print(self.__hobby) def foo(self): # 公有方法 # 类内部可以查看类的私有属性 print(self.__desires) def _

Python 入门 之 类的约束以及super()剖析

怎甘沉沦 提交于 2019-12-27 17:48:31
1、类的约束 第一版: class WechatPay: def pay(self): print("微信支付") class AliPay: def pay(self): print("支付宝支付") class QQpay: def fuqian(self): print("QQ支付") wei = WechatPay() ali = AliPay() qq = QQpay() wei.pay() ali.pay() qq.fuqian() # 当统一接口时 def pay(object): object().pay() # QQ支付无法实现归一化 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 零基础到项目实战,7天学习上手做项目 第二版: class PayClass: def pay(self): pass class WechatPay(PayClass): def pay(self): print("微信支付") class AliPay(PayClass): def pay(self): print("支付宝支付") class QQpay(PayClass): def fuqian(self): print("QQ支付") def pay(object): object().pay() pay

python用类实现装饰器

无人久伴 提交于 2019-12-25 18:49:09
一般实现python装饰器都是采用方法的模式,看起来有点复杂,模式如下: def send_msg_simple(url): def decorator(func): def wrapper(*args, **kw): func(*args, **kw) group_robot(url, "完毕:%s.%s" % (kw['db'], kw['table'])) return wrapper return decorator 但其实也可以采用类的方式,看起来逻辑更为清晰: class DecoratorTest(object): #定义一个类 def __init__(self,func): self.__func = func def __call__(self): #定义call方法,当直接调用类的时候,运行这里。 print('pre msg') self.__func() print('post msg') @DecoratorTest def test(): print('主函数体') if __name__=='__main__': test() 来源: https://www.cnblogs.com/wangbin2188/p/12098380.html

Python类的内置方法

帅比萌擦擦* 提交于 2019-12-25 16:00:51
目录 1、new、init 2、str、repr 3、call 4、del 5、iter、next 6、getitem、setitem、delitem 7、getattr、setattr、delattr 8、getatrribute 9、enter、exit 10、get、set、delete、描述符(研究中,待补充) **(为了方便和美观,省略了各内置方法前后的__双下划线)** 1、new、init __new__ 方法是真正的类构造方法,用于产生实例化对象(空属性)。重写 __new__ 方法可以控制对象的产生过程。 __init__ 方法是初始化方法,负责对实例化对象进行属性值初始化,此方法必须返回None, __new__ 方法必须返回一个对象。重写 __init__ 方法可以控制对象的初始化过程。 # 使用new来处理单例模式 class Student: __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = object.__new__(cls) return cls.__instance def sleep(self): print('sleeping...') stu1 = Student() stu2 = Student()

Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)

帅比萌擦擦* 提交于 2019-12-24 20:22:20
在面向对象的中,类与类之间存在三种关系:依赖关系、组合关系、继承关系。 1、依赖关系:将一个类的类名或对象当做参数传递给另一个函数被使用的关系就是依赖关系 class People: def __init__(self,name): self.name = name def open(self,bx): bx.open_door(self) def close(self,bx): bx.close_door(self) class Refrigerator: def __init__(self,name): self.name = name def open_door(self,p): print(f"{p.name} 打开冰箱") def close_door(self,p): print(f"{p.name} 关闭冰箱") r = People("大魔") # People类实例化一个对象r aux = Refrigerator("奥克斯") # Refrigerator类实例化一个对象aux r.open(aux) # 将aux对象当做参数传递给r对象的open方法使用 r.close(aux) # 将aux对象当做参数传递给r对象的close方法使用 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能

python基础(十一)面向对象和类

会有一股神秘感。 提交于 2019-12-24 10:42:18
面向对象 面向对象,简单来说用类对一切对象进行描述的一种编程思维和方法.在这里就不多做介绍(因为我也只是意会到一点点).根据面向对象的概念,我们需要注意的几个概念: 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法. 对象(Object):通过类定义的数据结构实例.对象包括两个数据成员(类变量和实例变量)和方法。 类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用. 实例变量:定义在方法中的变量,只作用于当前实例. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法:类中定义的函数. 继承:即一个派生类(derived class)继承基类(base class)的字段和方法.也称为父类和子类 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写. 实例化:创建一个类的实例,类到具体对象的过程 属性: 不管是变量或者是方法,都称为属性.变量一般称为静态属性,方法称为动态属性 面向对象的三大特性 1, 封装: 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 2, 继承: 让不同类型的对象获得其它类型对象的属性和方法. 3, 多态: 实现接口重用, 即可以不同类型对象使用相同的方法

Python继承扩展内置类,

一世执手 提交于 2019-12-23 05:42:35
给已经存在的类添加新的行为,继承是非常好的实现方式。但是如果要改变行为呢?比如在 Python继承扩展内置类, 我们的contact类只允许一个名字和一个邮箱,但是如果要对某些人增加电话号码呢?这里可以通过非常简单的给他增加一个电话号码的属性来实现,但是如果想 这第3个变量在初始化类的时候就可用,就需要重写__init__函数 。 重写 就是在子类里用一个(和超类相同的名字)新的方法来改变或者覆盖超类里的这个方法 。做这个不需要特殊的语法,会自动执行子类新创建的方法而不是超类的方法。以下是在之前Contact类中,使用Friend子类来继承 class ContactList(list): def search(self, name): '''Return all contacts that contain the search value in their name.''' matching_contacts = [] for contact in self: if name in contact.name: matching_contacts.append(contact) return matching_contacts class Contact: all_contacts = ContactList() def __init__(self, name, email):

python-类的定义

自古美人都是妖i 提交于 2019-12-17 16:47:53
class Geese: '''雁类''' neck = "脖子较长" # 定义类属性(脖子) wing = "振翅频率高" # 定义类属性(翅膀) leg = "腿位于身份的中心支点,行走自如" # 定义类属性(腿) def __init__(self): # 实例方法(相当于构造方法) print("我属于雁类!我有以下特征:") print(Geese.neck) # 输出脖子的特征 print(Geese.wing) # 输出翅膀的特征 print(Geese.leg) # 输出腿的特征 geese = Geese() # 实例化一个雁类的对象 class Geese: '''雁类''' def __init__(self): # 实例方法(相当于构造方法) self.neck = "脖子较长" # 定义实例属性(脖子) print(self.neck) # 输出脖子的特征 goose1 = Geese() # 创建Geese类的实例1 goose2 = Geese() # 创建Geese类的实例2 goose1.neck = "脖子没有天鹅的长" # 修改实例属性 print("goose1的neck属性:",goose1.neck) print("goose2的neck属性:",goose2.neck) geese = Geese() # 实例化一个雁类的对象

Python类定义和类继承详解

自闭症网瘾萝莉.ら 提交于 2019-12-17 09:54:10
类实例化后,可以使用其属性,实际上,创建一个实例之后,可以通过类名访问其属性,如果直接使用类名修改其属性,那么直接影响已经实例化的对象。 类的私有属性: __private_attrs 两个下划线开头,声明该为私有属性,不能在类的外部被使用或者直接访问,在类内部的方法中使用时 self.__private_attrs 类的方法: 在类的内部,使用def关键字可以为类定义一个方法,与一般的函数定义不同,类方法必须包含一个self参数,且为第一个参数。 私有的类方法: __private_method双下划线开头,声明该方法为私有方法,不能在类外部调用,在类的内部调用self.__private_methods 类的专有方法: __init__ 构造方法,在生成对象时调用 __del__ 析构方法,释放对象时调用 __repr__打印,转换 __setitem__ 按照索引赋值 __getitem__ 按照索引获取值 __len__ 获得长度 __cmp__ 比较运算 __call__ 函数调用 __file__ 是用来获得模块所在的路径的,这可能得到的是一个相对路径 __add__加运算 __sub__减运算 __mul__乘运算 __div__除运算 __mod__求余运算 __pow__称方 来源: https://www.cnblogs.com/mosson/p/6899036