码迷,mamicode.com
首页 > 其他好文 > 详细

类的初始化

时间:2020-01-12 11:34:19      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:修改属性   对象   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!