‘壹’ python创建类时无法带参数
首先,my_dog = Dog()这个实例化方法肯定有问题,your_dog = Dog("hehe",6)这个是正确的,那么为何实际运行结果是相反的呢?
看这里,这是我修改后的代码:
classDog():
def__init__(self,name_of_dog,age_of_dog):
self.name=name_of_dog
self.age=age_of_dog
defsetname(self,name):
self.name=name
defsetage(self,age):
self.age=age
my_dog=Dog("haha",5)
my_dog.setname("haha")
my_dog.setage(5)
print("Mydog'snameis",my_dog.name)
print("It's",my_dog.age,"yearsold.")
your_dog=Dog()
运行结果:
def__init__(self,name_of_dog,age_of_dog):
希望可以帮到你。
‘贰’ 为什么python的元编程能力没有ruby强
Ruby的确是比Python更干净的OOP,这也不奇怪,Ruby根本就是Smalltalk换了点语法而已。
但这个更干净并不是a.length vs. len(a),名词在前还是动词在前的问题,否则OOP也未免太肤浅了。
在Python里,对于a.f()可能是调用a所属的类的方法f,也可能是调用a的属性f。这个二义性在metaprogramming时带来很多不一致和麻烦,比如Python对__xxx__ magic method lookup的特殊规定。