需求:为对象初始化一个独有的属性
方法一:
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
网友评论