我正在学习python,做一个关于类的练习,它告诉我要给我的类加一个属性,给我的类加一个方法,我一直以为这是一回事,直到我看了练习,这两者有什么区别呢?
t3psigkw1#
心智模型:
根据Python的词汇表:
self
适用于实际代码的术语:
a = 10 # variable def f(b): # function return b ** 2 class C: c = 20 # class attribute def __init__(self, d): # "dunder" method self.d = d # instance attribute def show(self): # method print(self.c, self.d) e = C(30) e.g = 40 # another instance attribute
tag5nh1u2#
一个方法是一个属性,但不是所有的属性都是方法。例如,如果我们有一个类
class MyClass(object): class_name = 'My Class' def my_method(self): print('Hello World!')
这个类有两个属性,class_name和my_method,但是只有my_method是一个方法,方法是属于你的对象的函数,所有的类都有额外的隐藏属性,但是这就是你的练习要讨论的。
class_name
my_method
yr9zkbsy3#
简单明了的解释。属性==特征。方法==操作/行动。例如,让我们描述一只猫(喵!).猫的属性(特征)是什么?它有不同的品种,名字,颜色,是否有斑点......等等。猫的行为方式是什么?它会喵喵叫,会爬,会抓你,会破坏你的笔记本电脑等等。请注意区别,属性定义猫的特征。另一方面,方法定义动作/操作(动词)。现在,记住上面的定义,让我们创建一个类'cat'的对象...
class Cat():
要创建属性,请使用definit(self,arg 1,arg 2)-(如下所示)。“self”关键字是对类的特定示例的引用。
def __init__(self, mybreed, name): # Attributes self.breed = mybreed self.name = name # Operations/actions --> methods def kill_mouse(self): print('Insert some method to kill mouse here')
注意(上图)'mybreed'是用户需要指定的输入参数,而self.breed是分配给'mybreed'参数的示例的属性。通常,它们是相同的(例如,两者都是breed,self.breed = breed)。在这里,为了避免混淆,它们的编码不同。而属性通常写为'self.attribute_name'(如上所示)。现在,方法更像是动作或操作,在类体中定义一个函数来执行某个操作,例如杀死一只鼠标,方法也可以利用对象本身定义的属性。方法和属性之间的另一个关键区别是如何调用它。例如,假设我们使用上面定义的类创建一个示例。
my_cat = Cat()
若要调用属性,请使用
my_cat.name
或
my_cat.breed
对于方法来说,调用它是为了执行某个动作,在Python中,调用方法时要带一个左右括号,如下所示:
my_cat.kill_mouse()
4si2a6ki4#
方法是在类中定义的函数。属性是在类中定义的示例变量。示例:
class Example(object): def __init__(self, name): self.name = name def hello(self): print 'Hi, I am ' + self.name
这里hello是一个方法,name是一个属性。
hello
name
hwamh0ep5#
class example: global a # a=0 def __init__(self,x,y): self.fname=x self.lname=y def show(self): return "first name: {} & Last name: {}".format(self.fname,self.lname) obj1=example('reyan','ishtiaq') obj2=example('ishtiaq','reyan') print('method associated with obj1: '+ obj1.show()) print('method associated with obj2: '+ obj2.show()) obj1.a=20 obj2.a=30 print(obj1.a) print(obj2.a)
输出:与obj1关联的方法:名字:用户名:ishtiaq.............与obj2相关的方法:名字:用户名:瑞恩20 30
5条答案
按热度按时间t3psigkw1#
术语
心智模型:
根据Python的词汇表:
self
)。请参阅函数和嵌套作用域。示例
适用于实际代码的术语:
tag5nh1u2#
一个方法是一个属性,但不是所有的属性都是方法。例如,如果我们有一个类
这个类有两个属性,
class_name
和my_method
,但是只有my_method
是一个方法,方法是属于你的对象的函数,所有的类都有额外的隐藏属性,但是这就是你的练习要讨论的。yr9zkbsy3#
简单明了的解释。
属性==特征。方法==操作/行动。
例如,让我们描述一只猫(喵!).
猫的属性(特征)是什么?它有不同的品种,名字,颜色,是否有斑点......等等。
猫的行为方式是什么?它会喵喵叫,会爬,会抓你,会破坏你的笔记本电脑等等。
请注意区别,属性定义猫的特征。
另一方面,方法定义动作/操作(动词)。
现在,记住上面的定义,让我们创建一个类'cat'的对象...
要创建属性,请使用definit(self,arg 1,arg 2)-(如下所示)。
“self”关键字是对类的特定示例的引用。
注意(上图)'mybreed'是用户需要指定的输入参数,而self.breed是分配给'mybreed'参数的示例的属性。通常,它们是相同的(例如,两者都是breed,self.breed = breed)。在这里,为了避免混淆,它们的编码不同。
而属性通常写为'self.attribute_name'(如上所示)。
现在,方法更像是动作或操作,在类体中定义一个函数来执行某个操作,例如杀死一只鼠标,方法也可以利用对象本身定义的属性。
方法和属性之间的另一个关键区别是如何调用它。
例如,假设我们使用上面定义的类创建一个示例。
若要调用属性,请使用
或
对于方法来说,调用它是为了执行某个动作,在Python中,调用方法时要带一个左右括号,如下所示:
4si2a6ki4#
方法是在类中定义的函数。属性是在类中定义的示例变量。
示例:
这里
hello
是一个方法,name
是一个属性。hwamh0ep5#
输出:与obj1关联的方法:名字:用户名:ishtiaq.............与obj2相关的方法:名字:用户名:瑞恩20 30