class AAA(object):
hobby='play computer'
def __init__(self,name,age,weight):#类的构造方法
self.name=name#参数代入
self._age=age#也是参数代入,不过是半私有化,就是属性名变了啊
self.__weight=weight#全私有化?耍小聪明而已啊,改改名字而已
def get_weight(self):#定义第二个方法
return self.__weight#用于获取体重
if __name__=='__main__':
programmer=AAA('Alert',25,80)#实例化类,形成对象。
print (dir(programmer))#对象所有的继承的类的所有属性和方法
print(programmer.name)
print(programmer._age)
print(programmer._AAA__weight)
print(programmer.__dict__)
print(programmer.get_weight())
print(programmer._AAA__weight)#这个地方是对象的某一个内置的方法。
-----------------------------------------------------------------------------------------
C:\Users\sunqicheng\PycharmProjects\object\venv\Scripts\python.exe C:/Users/sunqicheng/PycharmProjects/object/Programmer.py
['_AAA__weight', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_age', 'get_weight', 'hobby', 'name']
Alert
25
80
{'name': 'Alert', '_age': 25, '_AAA__weight': 80}
80
80
Process finished with exit code 0
--------------------------------------------------
就是构造方法的私有属性,一种呢,就是self._age=age这种实例化对象之后可以直接调用.x._age()
另外一种就是全私有化self.__weight=weight
这种要x._AAA__weight()这样来方法,一定程度上保护了构造方法里的属性。
网友评论