Python - 04182016 - 类与实例间属性的理解

Python是个很灵活的语言,光看它的类和实例间属性的访问机制就可以看出这一点,不过这一点还真的不好理解,做了些测试之后我的理解是这样的:

实例在访问类属性时,先检索自己的names, 如果有的话就直接取出,没有的话就去来的names里面找,找不到就是error啦

class Pclass(object):
    """docstring for Pclass"""
    num = 10

    def __init__(self):
        super(Pclass, self).__init__()

p = Pclass()
print(p.num)    #10
p.num = p.num + 1
print(p.num)    #11
print(Pclass.num)   #10

Pclass.age=12
print(Pclass.age)   #12
print(p.age)    #12

p.xxx=555
print(p.xxx) #555
print(Pclass.xxx) #AttributeError: type object ‘Pclass‘ has no attribute ‘xxx‘
时间: 2024-08-10 01:52:12

Python - 04182016 - 类与实例间属性的理解的相关文章

python tips:类与实例的属性问题

实例是具象化的类,它可以作为类访问所有静态绑定到类上的属性,包括类变量与方法,也可以作为实例访问动态绑定到实例上的属性. 实例1: 1 class A: 2 work = list("hello") 3 kind = list("world") 4 another = 1 5 6 def test1(self): 7 print(self.work, self.kind, self.another) 8 self.work[0], self.kind [0] = &

python 面向对象整理 --------1.类和实例的属性

1.类的属性: # /usr/bin/env # coding = utf-8 class Chinese: #类的属性在这 country = 'China' def __init__(self, name): #实例的属性在这 self.name = name def play_ball(self, ball): print('%s正在打%s' % (self.name, ball)) #查看属性 print(Chinese.country) #修改属性 Chinese.country='J

python之---类和实例

类和实例: 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同. 仍以Student类为例,在Python中,定义类是通过class关键字: >>> class Student(object): ... pass ... >>> class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(obj

Python基础-类和实例

下文转载自廖雪峰大神的官方教程,非常感谢! 类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的方法,但各自的数据可能不同. 仍以Student类为例,在Python中,定义类是通过class关键字: class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object

Python—使用__slots__限制实例的属性

如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加name和age属性. 为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性: class Student(object): __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称 然后,我们试试: >>> s = Student() # 创建新的实例 >>> s.name = 'M

九、Python 一些类、实例、内建函数笔记

dir(Myclass)   用来展示一些类的内部属性还有方法,今天IBM面试问到了,居然忘记了,your sister. print Myclass.__dict__也可以 del c1清除一个引用 跟踪实例 class InstCt(object): count =0 def __init__(self): InstCt.count +=1 def __del__(self): InstCt.coutn -=1 def howMany(self): return InstCt.count [

python学习之类和实例的属性;装饰器@property

无论是类还是实例,一切皆是对象. Python是强动态语言,和java在这点上有所不同. class Ab(): a = 666 # 定义类对象Ab,自带属性a,值为666 # 使用Ab.__dict__可以查看类Ab的属性 us1 = Ab() us2 = Ab() # 定义两个实例对象us1.us2,这两个实例自身并不具备任何属性 # 只有在__init__中定义了self.arg=xxx的情况下,实例默认会具备arg属性 动态语言中,属性自带操作方法:获取(读).设置(写):还可以定义删除

python在类中使用__slot__属性

在类中定义__slot__属性来限制实例的属性字段,在创建大量对象的场合可以减少内存占用. 创建大量对象是内存占用对比: 类中不使用__slot__ class MySlot:def __init__(self, a, b, c): self.a = a self.b = b self.c = c @profile() def main(): myObj_list = list() for i in range(50000): myObj = MySlot(i, i, i) myObj_list

Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

目录 1.说明 2.代码 关于作者 @ 1.说明 python中属性:类属性,实例属性 方法:类方法,实例方法,静态方法 想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面 静态方法也就是个普通的方法,为了方便而已 实例方法,不能通过类来直接调用,要调用也可以self = 对象名 具体下面 2.代码 class Provice(object): #类属性 country = "china" def __init__(self,name): #实例属性 self.nam