当我学习面向对象编程时,我发现了两种在类中拉取方法的方法。我想知道哪一个更好。
让我创建一个非常简单的狗类作为例子:
class Dog():
def __init__(self, name):
self.name = name
def name_change(self, new_name):
self.name = new_name
def sit(self):
print(self.name + ' is sitting')
my_dog = Dog('Jackie')
print('Dog name is ' + my_dog.name)
my_dog.name_change('Aaron')
print('Dog name is ' + my_dog.name)
Dog.name_change(my_dog, 'James')
print('Dog name is ' + my_dog.name)
my_dog.sit()
Dog.sit(my_dog)
您可以看到我可以同时使用两者来更改属性:
my_dog.name_change('Aaron')
Dog.name_change(my_dog, 'James')
我也可以使用两者来拉取my_dog的方法:
my_dog.sit()
Dog.sit(my_dog)
作为初学者,我从教科书中看到的通常是第一种方式。
但不知怎的,我觉得第二种方式对我来说更容易理解,因为它从类名开始,缩小到类方法,然后使用我的实例(my_dog)作为self,然后使用其他需要时的参数。感觉非常有条理。