24_Python面向对象—类属性与实例属性

1、什么是类对象,实例对象
类对象:类名
实例对象:类创建的对象
2、类属性:就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本。
对于公有的类属性,在类外可以通过类对象和实例对象访问
类属性

# 类属性
class people:
    name="Tom"    #公有的类属性
    __age=18      #私有的类属性
 
p=people()
print(p.name)   #实例对象
print(people.name)  #类对象
 
# print(p.__age)    #错误 不能在类外通过实例对象访问私有的类属性
print(people.__age) #错误 不能在类外同过类对象访问私有的类属性

实例属性

class people:
    name="tom"
 
p=people()
p.age=18
 
print(p.name)
print(p.age)    #实例属性是实例对象特有的,类对象不能拥有
 
print(people.name)
#print(people.age)  #错误:实例属性,不能通过类对象调用

将实例属性放在构造方法中

class people:
    name="tom"
    def  __init__(self,age):
        self.age=age
 
p=people(18) #实例化
 
print(p.name)
print(p.age)    #实例属性是实例对象特有的,类对象不能拥有
 
print(people.name)
# print(people.age)  #错误:实例属性,不能通过类对象调用
 

类属性和实例属性混合

class people:
    name="tom"      #类属性:实例对象和类对象可以同时调用
    def  __init__(self,age):    #实例属性
        self.age=age
 
p=people(18)    #实例对象
p.sex="男"       #实例属性
 
print(p.name)
print(p.age)    #实例属性是实例对象特有的,类对象不能拥有
print(p.sex)
 
print(people.name)  #类对象
# print(people.age)  #错误:实例属性,不能通过类对象调用
# print(people.sex)  #错误:实例属性,不能通过类对象调用

如果在类外修改类属性,必须通过类对象去引用然后进行修改。
如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,
并且如果通过实例对象引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性

class Animal:
    name="Panda"
 
print(Animal.name)  #类对象引用类属性
p=Animal()
print(p.name)       #实例对象引用类属性时,会产生一个同名的实例属性
p.name="dog"        #修改的只是实例属性的,不会影响到类属性
print(p.name)         #dog
print(Animal.name)    #panda
# 删除实例属性
del p.name
print(p.name)

 
class Test:
 
    num=100 #类属性
    def __init__(self):
        self.age=18     #实例属性
 
test1=Test()
test2=Test()
# test1.age=19
# test2.age=20
print(test1.num)    #100
test1.num=200       #如果通过对象去修改类属性,那么Python会自动给这个对象和这个类属性相同名字的实例属性
print(test1.num)    #200,只是修改了副本
print(Test.num)     #100
 
del test1.num        #删除之后,仍能打印
print(test1.num)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值