Python中的__init__函数与self

需求:为对象初始化一个独有的属性

方法一:

class Animal:
    age = 2

a1 = Animal()
a2 = Animal()

a1.name = 'dog'
a2.name = 'cat'

print(a1.name)  # dog
print(a2.name)  # cat

方法二:

class Animal:
    age = 2


def set_args(obj, name):
    obj.name = name


a1 = Animal()
a2 = Animal()

set_args(a1, 'dog')
set_args(a2, 'cat')

print(a1.name)  # dog
print(a2.name)  # cat

方法三:

class Animal:
    age = 2

    def set_args(obj, name):
        obj.name = name


a1 = Animal()
a2 = Animal()

Animal.set_args(a1, 'dog') 
Animal.set_args(a2, 'cat')

print(a1.name)  # dog
print(a2.name)  # cat

方法四:

class Animal:
    age = 2 

    def __init__(obj, name):
        obj.name = name


a1 = Animal('dog')
a2 = Animal('cat')

print(a1.name)  # dog
print(a2.name)  # cat

"""
说明:
此方法中的a1 = Animal('dog')实际上是在实例化的时候执行了__init__方法
进行了一次类似方法四中的操作a1 = Animal() ; Animal.set_args(a1, 'dog')。
可以意淫为:a1 = Animal() ; Animal.__init__(a1, dog)
实际上__init__是python的一个内建函数,这种有特殊用法的函数也叫做魔法函数。
__init__函数可以用于对象初始化
"""

self就是一种约定,你也可以不用self,就像上面第四个方法一样,叫obj或者叫xxx都没问题,他表示的是实例化对象本身(例子中的a1和a2都是类Animal实例化的对象)。

class Animal:
    age = 2

    def __init__(self, name):
        self.name = name


a1 = Animal('dog')
a2 = Animal('cat')

print(a1.name)  # dog
print(a2.name)  # cat
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容