python类的属性和对象属性_python中的类属性和对象属性的作用域

1926349-20200201122910940-618414260.png

class Test:

num=100

def __init__(self):

self.age=18

test1=Test()

test2=Test()

print(test1.num)

test1.num=200

"""

只是修改了这个对象作用域下的属性

类中的num不会发生改变

"""

print(test1.num)

print(Test.num)

del test1.num

print(test1.num)

def __init__方法的作用域限制在实例化出的对象

self.age=18

这里的age属性是对象的特有属性,类访问不到

跟 p=person()

p.age=18

是一样的效果

只有p能访问到这个age,person访问不到

如果person中也有这个age,是在两个区域,互不影响

除非在p中的age属性删除之后,p会向person中找相关的属性

class a:

def __init__(self):

self.name="a"

self.age=12

self.score=23

def test():

print("类方法测试")

print(a.name)

"""

这里会报错,因为def __init__构造函数之内的属性只能通过

实例化对象之后,通过对象进行访问,类没有办法直接访问

如果是对象中再增加属性,或者修改属性的值,这些都跟类的属性没有关系

因为两种属性是在两个区域内创建的

"""

a.test()

对于类:

类可以直接访问类属性

类不可以直接访问实例方法,必须通过实例化之后的对象来访问实例方法

类不可以访问对象特有的属性(比如:def __init__中定义的属性)

类可以直接访问类方法

类可以直接访问静态方法

所以存在:如果对象中的属性跟类中的属性相同,改变对象中的属性值,不会影响类中的属性值

对于对象:

对象可以直接访问类的属性(实例化过程中,类已经将属性赋给对象)

对象可以直接访问自己私有的属性

对象可以直接访问类方法

对象可以直接访问静态方法

对象可以直接访问实例方法

class a:

def __init__(self,name):

self.name=name

print(self.name)

age="这是类属性"

def test(self):

self.name="name已经修改"

self.age="age已经修改"

print(self.age)

print(self.name)

a1=a("这是对象属性")

print(a.age)

print(a1.name)

print(a1.age)

a1.test()

这里所有的带有self的方法都是实例方法,只能由对象才能访问到,且实例方法中可以访问对象的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值