既然没有self在预设的参数中我们就可以直接使用类(Class)中的方法,
可以看到我们直接使用Cat.run(),并没有先具体化物件~
class Cat:
def __init__():
color = 'Red'
legs = 'Long'
def run():
print('Cat is running')
Cat.run() # Cat is running
坏处是我在同一类中不能使用同一类宣告的变数或方法,什么意思呢?看下一个范例。
(2) 有self 要先具体化物件
这边可以注意到nask = Cat() 先创具体化物件,也就是把我们的猫咪设计图做成猫叫nash。
而后再用我们生成的物件nask去呼叫方法.run(),nask.run()就打印出Cat is running Long,
你会发现一件事如果使用self在同一类(Class)中不同方法(def)间也可以使用前面有加上self.的变数或者方法,
在run(self)里面用了__init__时宣告的变数self.legs。
class Cat:
def __init__(self):
self.color = 'Red'
self.legs = 'Long'
def run(self):
print('Cat is running', self.legs) # 可以在同一類中呼叫有冠上self的變數及方法
nask = Cat() # 先創具體化物件
nask.run() # Cat is running Long
(3) __init__是什么?
就是物件在具体化的时候会把__init__(self)底下的运算逻辑等先执行一遍,
在nask = Cat()具体化物件的时候,__init__里面都被执行一遍了,所以打出Cat say hi。
class Cat:
def __init__(self):
self.color = 'Red'
self.legs = 'Long'
print('Cat say hi')
def run(self):
print('Cat is running', self.legs) # 可以在同一類中呼叫有冠上self的變數及方法
nask = Cat() # 先創具體化物件
nask.run() # Cat is running Long
'''執行
Cat say hi
Cat is running Long
'''
(4) __init__预设参数
在__init__(self, name)的参数因为具体化物件时会执行,所以在具体化物件时间先给,
可以在下面执行看到先具体化物件打印出Cat say hi,而后执行nask.run()打印出Cat is running Long及恩恩。
class Cat:
def __init__(self, name):
self.color = 'Red'
self.legs = 'Long'
self.name = name
print('Cat say hi')
def run(self):
print('Cat is running', self.legs)
print(self.name)
nask = Cat('恩恩') # __init__的參數具體化物件時要先給
nask.run() # Cat is running Long
'''執行
Cat say hi
Cat is running Long
恩恩
'''
三、后记
其实你会发现self就是在class里面沟通的桥梁!
而__init__只是python的惯用法在具体化物件时要先执行的方法。
#python#