美文网首页
Python中的__init__函数与self

Python中的__init__函数与self

作者: 0bug | 来源:发表于2019-11-05 19:50 被阅读0次

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

方法一:

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

相关文章

网友评论

      本文标题:Python中的__init__函数与self

      本文链接:https://www.haomeiwen.com/subject/gfmebctx.html