python类

Python 类实例化

匿名 (未验证) 提交于 2019-12-02 22:51:30
在这里有个比较模糊的地方,就是这个self,表示自身的意思。说明这个程序在调用的时候, 调用了自身的函数,应该就是这个意思。。 # !/usr/bin/python # coding=gbk # 创建一个Person类 class Person : # 在里面创建一个sayhi函数 def sayHi ( self ): # 调用的时候打印输出 print ' hello,how are you!? ' # 将类实例化 p = Person () # 执行类里面定义的函数 p . sayHi () 转载于:https://my.oschina.net/xiaocon/blog/199321 来源:51CTO 作者: chiqu8683 链接:https://blog.csdn.net/chiqu8683/article/details/100607280

Python 类抽象与继承 派生覆盖 组合 属性查找顺序 新式类菱形继承

匿名 (未验证) 提交于 2019-12-02 22:51:30
一 继承与抽象(类与类之间的关系) 1.什么是继承:在程序中继承是描述类与类之间的关系。例如:A类继承了B类,A类就能直接使用B类已经存在的方法和属性(A类称之为子类,B类称之为父类也叫基类) 2.为什么要使用继承:继承的一方可以直接使用被继承一方已经存在的方法和属性。其目的是为了提高代码的复用性。 3.继承语法 class 父类名称: 类的内容 class 子类名称(父类名称): 类的内容 #在python中 一个子类可以同时继承多个父类 View Code 抽象 1.什么是抽象:将多个子类中相同的属性和方法,进行抽取形成一个新的类。再有别的子类们进行继承。 2.例: class Teacher: school = "oldboy" def __init__(self,name,age): self.name = name self.age = age def say_hi(self): print("hello i am %s" % self.name) def teach(self): print("正在教书......") class Student(Teacher): pass # 问题:学生类继承了老师类,所以学生类都具备了老师类的name,age属性和say_hi,teacher方法。但是teacher方法应该是老师独有的,学生不应该具备。 # 解决:抽象 class

python - 面向对象基础(类,对象,查询顺序,组合)

匿名 (未验证) 提交于 2019-12-02 22:51:30
一.面向对象 1. 类:具有相同属性和技能的一类事物 2.对象:具体的类的表现,具体的实实在在的一个实例     1. 猫是一类,谁家养的猫是一个对象 二.类的应用与操作 1.类的创建 class Person: # 通过class创建一个类,类名首字母大写 2.类名的角度   1.操作类的静态变量 class Person: # 创建一个类,类名首字母大写 mind = '思想' # 定义一个变量,静态变量,静态字段 faith = '信仰' def __init__(self): print('今天又是充满元气的一天') def work(self): # 方法,函数,动态变量 print('新的一天') # 类名.__dict__ 查询类中所有内容。(不能进行增删改操作) print(Person.__dict__) # 类名.__dict__['静态变量'] 查询静态变量的内容。(不推荐) print(Person.__dict__['mind']) # 万能的 . 对类中的单个变量进行增删改查操作 Person.money = '600' # 增 del Person.faith # 删 Person.mind = '思维' # 改 print(Person.mind) # 查 print(Person.__dict__)   2.操作类的方法 Person.work(

Python -- 面向对象:类的约束

匿名 (未验证) 提交于 2019-12-02 22:51:30
在一些重要的逻辑,与用户数据相关等核心部分,要建立一种约束,避免发生此类错误. 类的约束有两种解决方式: # 第一种约束:在父类定义一个pay方法,主动抛出异常 class Paymeng: def pay(self,money): raise Exception('子类必须定义此方法') class QQpay(Payment): def pay(self,money): print(f'使用QQ支付{money}') class Alipay(Payment): def pay(self,money): print(f'使用Ali支付{money}') class Wechat(Payment): def pay(self,money): print(f'使用微信支付{money}') def pay(obj,money): # 归一化设计 obj.pay(money) obj1 = QQpay() obj2 = Alipay() obj3 = Wechat() pay(obj3,300) # 子类中找不到pay方法,到父类中找,主动抛出异常 # 第二种:利用抽象类的概念:基类如下设置,子类如果没有定义pay方法,在实例化对象时就会报错. from abc import ABCMeta,abstractclassmethod class Payment(metaclass

Python中类方法、__new__方法和__init__方法解析

匿名 (未验证) 提交于 2019-12-02 22:51:30
在编程语言中创建一个类,有构造方法这样的一个术语。而在Python中,通常大家都认为__init__是构造方法,其实并不完全等同。在构建类中,有一个特殊的方法__new__,这个才能等同为构造方法。 __new__是一个类方法,我们在定义一个类方法时需要在函数前打上@classmethod装饰器,而__new__不需要,因为它经过特殊处理。为了理解__new__方法,我们先来看看类方法是什么。 class MyClass: @classmethod def test(cls): print(cls.__name__) MyClass.test() #输出 MyClass 在MyClass类中,test方法就是类方法,它传入第一个参数为cls,其实就是MyClass类,打印cls.__name__可以看到结果。类方法可以直接 类名.方法名() 调用。通常类方法是 备选构造方法 。 >>> from datetime import datetime >>> datetime.fromtimestamp(324234) datetime.datetime(1970, 1, 5, 2, 3, 54) 如上所示,内置的datetime包中的fromtimestamp就是类方法,可以从多种方式构造出datetime对象。 def __new__(cls, a): return super().

python的WeakKeyDictionary类和weakref模块的其他函数

匿名 (未验证) 提交于 2019-12-02 22:51:30
python的WeakKeyDictionary类和weakref模块的其他函数 # -*- coding: utf-8 -*- # @Author : ydf # @Time : 2019/6/13 13:18 import time import weakref from app.utils_ydf import nb_print class A(): def __init__(self,x): self._x = x def __repr__(self): return f'A类的{self._x}实例 {id(self)}' def __del__(self): nb_print(f'摧毁啦 {self._x} 。。。。') wd = dict() # wd = weakref.WeakKeyDictionary() a1 = A(1) a2 = A(2) wd[a1] = 'xxxxxxx' wd[a2] = 'yyyyyyy' nb_print('销毁a1对象前') for item in wd.items(): nb_print(item) del a1 nb_print('销毁a1对象后') for item in wd.items(): nb_print(item) 除此之外还有weakvaluedictionary和weakset这些对象。

python 类之间的关系

匿名 (未验证) 提交于 2019-12-02 22:11:45
类与类之间的关系 1. 依赖关系 class Plant: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def da(self,js): print("植物打僵尸") js.xue -= self.gongjili if js.xue <= 0: print("僵尸死亡") else: print(f"僵尸掉血{self.gongjili},僵尸还剩{js.xue}血") class Jiang: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def chi(self,zw): print("僵尸咬植物") zw.xue -= self.gongjili if zw.xue <= 0: print("植物死亡") else: print(f"植物掉血{self.gongjili},植物还剩{zw.xue}血") p = Plant("豌豆",1000,300) j = Jiang("路障",1800,200) p.da(j) p.da(j) p.da

python 类

匿名 (未验证) 提交于 2019-12-02 22:11:45
1 class Human: 2 total_count = 0 # 类变量 3 def __init__ (self, name): 4 print (name, ‘ 对象被创建 ‘ ) 5 6 print (Human.total_count) # 类直接访问类变量 0 7 h1 = Human( ‘ 小张 ‘ ) 8 print (h1.total_count) # 0 用此类的实例可以访问类变量 9 h1.total_count = 100 # 为对象添加实例变量 10 print (h1.total_count) # 100, 优先访问对象的实例变量 11 print (Human.total_count) # 0, 访问类的类变量 12 print (h1. __class__ .total_count) # 0 通过此类的实例对象的__class__属性来访问类变量 类变量的访问 1 class Human: 2 # 以下列表限制此类的对象只能有‘name‘ 和‘age‘ 属性 3 __slots__ = [ ‘ name ‘ , ‘ age ‘ ] 4 5 def __init__ (self, name, age): 6 self.name, self.age = name, age 7 8 9 h1 = Human( " Tarena " , 15 ) 10

Python类定义、属性、初始化和析构

吃可爱长大的小学妹 提交于 2019-12-02 16:13:42
类的定义,属性和方法概念 方法中self的作用和意义 初始化( __init__ ) 和 析构方法( __del__ ) 类的定义 class 类名 实例 实例名 = 类名() 一个“实例”的“特征”,就是“属性” 私有属性 在python中有两种私有属性,分别是在属性前加 一个下换线(_) 和 两个下划线(__) 一个下滑线外部可以直接访问(用运算符“.”,点不出来,在知道有的情况下,可以直接使用) 两个下划线外部不可以直接访问(实例名._类名__私有属性、这样调用、用dir(实例名)可以查看所有属性和方法) 类是一个独立存放变量(属性/方法)的空间 实例也是一个独立存放变量的空间,不同实例之间的空间互相不可见 运算符“.”调用类的属性或方法 “类”与“实例”之间的关系 类是一类事物的抽象,不是真实存在的,描绘了该类事物的共性 实例是某类事物的具体个体,是该类事物的具体表现,它是真实存在的 方法 “方法”就是封装在类里的一种特殊的函数 通常,将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身 方法总是定义在类中的,但是却叫“实例方法”,因为它表示该类所有实例所共有的行为 初始化(__init__) 在Python中有很多以双下划线开头且以双下划线结尾的固定方法,他们会在特定的时机被触发执行 __init__ 就是其中之一,它会在实例化之后自动被调用