类属性

Python classmethod 修饰符

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 19:03:00
描述 classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。 语法 classmethod 语法: classmethod 参数 无。 返回值 返回函数的类方法。 实例 以下实例展示了 classmethod 的使用方法: # !/usr/bin/python # -*- coding: UTF-8 -*- class A(object): bar = 1 def func1(self): print('foo') @classmethod def func2(cls): print('func2') print(cls.bar) cls().func1()# 调用 foo 方法 A.func2()# 不需要实例化 输出结果为: func2 1 foo 上面是例1,下面是例2 class A(object): # 属性默认为类属性(可以给直接被类本身调用) num = "类属性" # 实例化方法(必须实例化类之后才能被调用) def func1(self): # self : 表示实例化类后的地址id print("func1") print(self) # 类方法(不需要实例化类就可以被类本身调用) @classmethod def func2(cls): # cls

Python 笔记:07 子类

旧城冷巷雨未停 提交于 2019-11-29 17:11:45
子类: 一、定义:   是相对于父类而言的,B类从A类,继承了A类中的属性和方法,则A类是父类,B类是子类 二、固定格式:   class 子类名(父类名):   #初始化子类属性   def __init__(self,父类变量1,父类变量2):    #初始化父类的属性     super( ).__init__(父类属性1,父类属性2)或父类名.__init__(父类属性1,父类属性2)     self.子类新变量名=值   def 子类新方法:     ...... 三、实例化相同 四、例:   class Taide_dog(Dog)   def __inint__ (self,name,age)   super().__init__(name,age)或 Dog.__init__(name,age)   self.weight=15   def run(self)’   print('This Dog weight : ' + str(self.weight)+ ' It needs to run!‘) 来源: https://www.cnblogs.com/wssking/p/11523418.html

python的类属性、实例属性、类方法、静态方法

爱⌒轻易说出口 提交于 2019-11-28 00:42:27
类属性 就像如下代码: class Person: name = "张三" # 共有类属性 __age = 18 # 私有类属性 在类中直接定义的属性就是类属性, 它被所有的实例对象所共有 。 对于共有类属性,在类外可通过类对象和实例对象访问 。 例如: class Person: name = "张三" # 共有类属性 __age = 18 # 私有类属性 p = Person() print(p.name) # 通过实例对象访问共有属性 print(Person.name) # 通过类对象访问共有属性 """ 输出结果: 张三 张三 """ 私有的类属性在类外不能被访问,否则会报异常。 实例属性 在类中通过self.xxx或者实例对象.xxx定义的属性就是实例属性。 每个实例属性仅在当前实例对象中有,若想要所有的实例对象有该实例属性,则需要在__init __初始化方法中定义该实例属性。 如下代码所示定义实例属性: class Person: def __init__(self): self.name = "张三" # 定义实例属性 p = Person() print(p.name) 或者 class Person: pass p = Person() p.name = "张三" # 定义实例属性 print(p.name) 通过类对象修改类属性的值

类和对象

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 20:27:54
1、Python中面向对象程序设计特点:封装、继承和多态 关于继承:可以打个形象的比方 矩形、菱形、平行四边形和梯形等都是四边形,以平行四边形为例,如果把平行四边形看成四边形的延伸,那么平行四边形就复用了四边形的属性和行为,同时添加了平行四边形特有的属性和行为,如平行四边形的对边平行且相等。 ---->在Python中可以把平行四边形类看作是继承四边形类后产生的类,其中,将类似于平行四边形的的类称为子类,将类似于四边形的类称为父类或超类, 在阐释平行四边形和四边形关系时,可以说平行四边形是特殊的四边形,却不能说四边形是平行四边形。 ---->同理Python中可以说子类的实例都是父类的实例,却不能说父类的实例都是子类的实例。 继承中 方法重写 :指的是派生类方法想重写,不想从基类继承时,就需要改写基类的方法。 基类的成员都会被派生类继承,当基类中的某个方法不完全适用于派生类时,就需要在派生类中重写父类的这个方法。 class Fruit: # 父类 def harvest(self): pass class Apple(Fruit): # 派生类 def harvest(self): # 方法重写 pass 派生类中定义的__init__方法不会自动调用基类的__init__方法,如想让他调用,需要在派生类中加入super()__init__() class Fruit: # 父类

Python3 之 类属性与实例属性

假如想象 提交于 2019-11-27 16:21:31
类属性与实例属性 类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。 类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问 来源: https://www.cnblogs.com/gengyufei/p/11370026.html

python 中__slots__类属性

谁都会走 提交于 2019-11-27 12:45:13
私有属性: Python 不能像 Java 那样使用 private 修饰符创建私有属性,但是 Python 有个简单的机制,能避免子类意外覆盖“私有”属性。 举个例子。有人编写了一个名为 Dog 的类,这个类的内部用到了 mood 实例属性,但是没有将其开放。现在,你创建了 Dog 类的子类:Beagle。如果你在毫不知情的情况下又创建了名为 mood 的实例属性,那么在继承的方法中就会把 Dog 类的 mood 属性覆盖掉。这是个难以调试的问题。 为了避免这种情况,如果以 __mood 的形式(两个前导下划线,尾部没有或最多有一个下划线)命名实例属性,Python 会把属性名存入实例的 __dict__ 属性中,而且会在前面加上一个下划线和类名。因此,对 Dog 类来说, __mood 会变 _Dog__mood ;对 Beagle 类来说,会变成 _Beagle__mood 。这个语言特性叫名称改写(name mangling)。 Python 解释器不会对使用单个下划线的属性名做特殊处理,不过这是很多 Python 程序员严格遵守的约定,他们不会在类外部访问这种属性。 遵守使用一个下划线标记对象的私有属性很容易,就像遵守使用全大写字母编写常量那样容易。 例子: __slots__类属性 __slots__ 它会影响对象的内部存储,对内存用量可能也有重大影响

Python3__init__方法只初始化一次对象

混江龙づ霸主 提交于 2019-11-27 12:08:31
Python3__init__方法只初始化一次对象-------继上篇创建单例对象博文 代码示例: 1)修改前的代码:(先使用 __new__ 方法创建单例对象-------继上篇博文) class Dog(object): __instance = None def __new__(cls, name): if cls.__instance == None: cls.__instance = object.__new__(cls) return cls.__instance else: #return 上一次创建的对象的引用 return cls.__instance def __init__(self, name): self.name = name a = Dog("史努比") print(id(a)) print(a.name) b = Dog("巴扎嘿") print(id(b)) print(b.name) 运行结果: 140460458921936 史努比 140460458921936 巴扎嘿 结果分析:两个id相同说明只创建了一个对象,单例对象,但是两次姓名不同。 目的: 创建多次单例对象时,使其实例属性也相同,即仅仅初始化一次对象,则需要通过修改 __init__ 方法实现。 思路: 在上一篇博文中( Python3__new__方法用法之创建单例对象 )

Python入门之类方法和静态方法

社会主义新天地 提交于 2019-11-27 05:47:37
示例代码 class Game(object): #类属性 num = 0 #实例方法 def __init__(self): #实例属性 self.name = "laowang" #类方法 @classmethod def add_num(cls): cls.num = 100 #静态方法 @staticmethod def print_menu(): print("----------------------") print(" 穿越火线V11.1") print(" 1. 开始游戏") print(" 2. 结束游戏") print("----------------------") game = Game() #Game.add_num()#可以通过类的名字调用类方法 game.add_num()#还可以通过这个类创建出来的对象 去调用这个类方法 print(Game.num) #Game.print_menu()#通过类 去调用静态方法 game.print_menu()#通过实例对象 去调用静态方法 1. 类方法 是类对象所拥有的方法,需要用修饰器 @classmethod 来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以 cls 作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以 cls 作为第一个参数的名字,就最好用 cls

Python入门之关于类属性和实例属性的理解

穿精又带淫゛_ 提交于 2019-11-27 05:46:41
Python入门之关于类属性和实例属性的理解: 如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。 来源: https://blog.csdn.net/qq_40877371/article/details/99460615

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),后面的一串字符表示这个对象的内存地址 #类中创建的属性和方法可以被其所有的实例调用, 而且,实例的数目在理论上是无限的。 我们可以同时“新建”多个实例 类也被称为“实例工厂”