类的属性(公有属性,受保护属性,私有属性,只读属性propery)

 1.x是类的公有属性

class Animal:
    x = 10
    def test(self):
        print(Animal.x)
        print(self.x)               #self是类本身,等于Animal
    

class Dog(Animal):
     def test2(self):
        print(Dog.x)
        print(self.x)              

a = Animal()
a.test()                            #在类内部访问


print(Animal.x)
print(Dog.x)                        #在模块文件内的其他位置访问

公有属性可以在类内部访问,子类内部访问,在模块文件内的其他位置访问,跨模块访问

跨模块访问有两种方式

一,import 文件名

        引用文件名中的属性需要加模块名

        eg:print(文件名.a)

二,from 文件名 import *

        引用文件名中的属性不需要加模块名

        eg:print(a


2._x是类的受保护属性

class Animal:
    _x = 10
    def test(self):
        print(Animal._x)
        print(self._x)               #self是类本身,等于Animal

受保护属性可以在类内部访问,子类内部访问,在模块文件内的其他位置访问(会有警告,但可以访问),不可以跨模块访问

当文件中有__all__ = ["属性1"],此时可以跨模块访问,如下

__all__ = ["_b"]
_b = 2                #_b可以跨模块访问

3.__x是类的私有属性(两个下划线)

class Animal:
    __x = 10
    def test(self):
        print(Animal.__x)
        print(self.__x)   

私有属性只能在类内部访问当文件中有__all__ = ["属性1"],此时可以跨模块访问

子类内部,在模块文件内的其他位置都不可以跨模块访问

注:以下的操作

class Person:
    def __init__(self):
        self.__age = 18

p = Person()
p.__age = 10         #此时生成的是实例对象,而不是更改类中的对象
print(p.__age)    
print(p.__dict__)            #{'_Person__age': 18, '__age': 10}
print(Person().__dict__)     #{'_Person__age': 18}

4.只读属性

4.1实现方法1

class Person:
    def __init__(self):
        self.__age = 20

    def getAge(self):
        return self.__age

p1 = Person()
print(p1.getAge())

 4.2使用propery装饰器

propery装饰器作用:能够以读取属性的方式调用方法

class Person(object):
    def __init__(self):
        self.__age = 20

    @property
    def age(self):
        return self.__age

p1 = Person()
print(p1.age)     #20   以读取属性的方式调用方法
p1.age = 50       #会报错,私有属性不能赋值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值