Python实例属性
类的属性
类的属性包括:
实例属性
类属性
私有属性
特殊属性
实例属性
1.类被实例化后才会具有的属性
2.一般在_init_()方法中创建并初始化
3.直接使用即定义:self.
4.引用方法:self.
5.self用来表示类的实例的
例如:在类TestCss当中定义实例属性
class TestCss:
cssa = 'class-attribe'
def __init__(self):
self.a = 0
self.b = 10
def info(self):
print('a:',self.a,'b:',self.b)
if __name__ == '__main__':
tc = TestCss()
tc.info()
程序的运行结果为:
6.类外用实例名.属性名方式定义和引用
例如:
class TestCss:
cssa = 'class-attribe'
def __init__(self):
self.a = 0
self.b = 10
def info(self):
print('a:',self.a,'b:',self.b)
if __name__ == '__main__':
tc = TestCss()
tc.info()
if __name__ == '__main__':
tc = TestCss()
tc.info()
tc.color = 'red'
print(tc.color)
程序的运行结果为:
7.相同类的不同实例其实例属性是不相关的
例如:
lass TestCss:
cssa = 'class-attribe'
def __init__(self):
self.a = 0
self.b = 10
def info(self):
print('a:',self.a,'b:',self.b)
if __name__ == '__main__':
tc = TestCss()
tc.info()
tc = TestCss()
tca = TestCss()
tc.a = 100
tc.b = 200
tc.info()
tca.info()
程序的运行结果为:
8.一般不建议在_init_()方法之外中创建和初始化实例属性
9.一般不推荐类外定义和修改,修改可以单独定义方法。
Python类属性
类属性
1.类定义后就存在,而且不需要实例化
2.类属性使得相同类的不同实例共同持有相同变量
类属性实例
attrb.py
class TestCss:
cssa = 'class-attribe'
def __init__(self):
self.a = 0
self.b = 10
def info(self):
print('a:',self.a,'b:',self.b,'cssa:',TestCss.cssa)
def define_a(self):
self.c = 19
if __name__ == '__main__':
# tc = TestCss()
# tc.info()
# tc.color = 'red'
# print(tc.color)
# tc = TestCss()
# tca = TestCss()
# tc.a = 100
# tc.b = 200
# tc.info()
# tca.info()
# tc = TestCss()
# tc.define_a()
# print(tc.c)
tc = TestCss()
tc.info()
tca = TestCss()
tc.info()
TestCss.cssa = 0
tc.info()
tca.info()
程序的运行结果为:
Python私有属性
私有属性
1.不提供限制属性访问的关键字(无法限制类的各种属性在类外直接访问)
2.使用_ _开头的变量名加以标志,只有类对象自己能访问
3.使用_开头的变量名加以标志,应该只有类对象及其子类能访问(非强制性)
案例
private.py
class A:
def __init__(self):
self.__ab = 0
def info(self):
print(self.__ab)
a = A()
a.info()
a.__ab = 3
a.info()
print(a.__ab)
程序的运行结果为:
将双下划线全部变为单下划线
private1.py
class A:
def __init__(self):
self._ab = 0
def info(self):
print(self._ab)
a = A()
a.info()
a._ab = 3
a.info()
print(a._ab)
程序的运行结果为:
Python特殊属性
特殊属性
保存对象的元数据(_doc_ ,_name_,_dict_,_module_,_base_)
演示
小练习
定义一个类Box,具有实例属性长度(length)、宽度(width)、高度(height)。具有私有属性体积(由长、宽、高计算得来),并且它的每个实例可以直到它被实例化的数量,然后实例化它们五次,并输出每个实例的所有属性。