标签:修改属性 对象 hook 魔术方法 for style str res init
类的初始化
类的三大特性有类实例,属性和类方法
class Person: pass
1.类属性的添加,可以直接在类下面写入,也可以在类外面写入
class Person: # 直接在类下面添加 age = 23 height = "180cm" hobby = "code" # 在类外面添加 类名.类属性名=属性值 Person.name = "name" # 查看类属性 print(dir(Person)) # [‘__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‘, ‘height‘, ‘hobby‘, ‘name‘]
2. 实例化对象
# 实例化对象 zgzeng = Person()
# 实例化对象 zgzeng = Person() # 实例对象访问类属性 print(zgzeng.age) # 23 print(zgzeng.name) # name print(zgzeng.hobby) # code # 修改属性 print(id(Person.name)) # 1239214623792 print(id(zgzeng.name)) # 1239214623792 zgzeng.name = "zgzeng" print(id(zgzeng.name)) # 1239244643440
print(Person.name) # name
print(id(Person.name)) # 123921462379
我们这里可以知道,如果实例对象下面没有name属性,那么访问的就是类下面的属性,如果通过实例名.name = 属性值,这并没有修改原来的类属性name,而是增加了一个实例属性
# 添加实例属性 zgzeng.age = 24 zgzeng.weight = "55kg" print(zgzeng.age) # 24 print(zgzeng.weight) # 55kg
除了这个方法来添加实例属性之外,还可以在类的内部,通过初始化方法,添加实例属性
class Person: # 直接在类下面添加 age = 23 height = "180cm" hobby = "code" # 类的初始化 def __init__(self, gentle, address): self.gentle = gentle self.address = address
# 实例化对象 zgzeng = Person("female", "Jiangxi") # 访问实例属性 print(zgzeng.gentle) # female print(zgzeng.address) # Jiangxi
__init__方法是一种初始化的魔术方法,魔术方法有很多种,每一个魔术方法都有他特定的用途,而初始化方法通常被用作来实例对象和定义实例属性的
标签:修改属性 对象 hook 魔术方法 for style str res init
原文地址:https://www.cnblogs.com/zgzeng/p/12182068.html