Bra*_*ang 13 python oop methods attributes class
我正在学习 python 并做一个关于课程的练习。它告诉我向我的类添加 nd 属性,向我的类添加一个方法。在我阅读练习之前,我一直认为这些是同一回事。两者有什么区别?
Ray*_*ger 22
心智模型:
根据 Python 的词汇表:
属性:与对象相关联的值,该值使用虚线表达式按名称引用。例如,如果对象 o 具有属性 a,它将被引用为 oa
方法:在类体内定义的函数。如果作为该类的实例的属性调用,则该方法将获取实例对象作为其第一个参数(通常称为 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 variable
Run Code Online (Sandbox Code Playgroud)
Jer*_*bon 12
方法是属性,但并非所有属性都是方法。例如,如果我们有类
class MyClass(object):
class_name = 'My Class'
def my_method(self):
print('Hello World!')
Run Code Online (Sandbox Code Playgroud)
这个类有两个属性,class_name和my_method。但只是my_method一种方法。方法是属于您的对象的函数。所有类都存在其他隐藏属性,但这就是您的练习可能要讨论的内容。
一个快速、简单的解释。
属性==特征。方法 == 操作/动作。
例如,让我们描述一只猫(喵!)。
猫的属性(特征)是什么?它有不同的品种、名称、颜色、是否有斑点等。
猫的方法(动作)是什么?它可以喵喵叫、攀爬、抓挠你、毁坏你的笔记本电脑等。
注意区别,属性定义了猫的特征。
另一方面,方法定义动作/操作(动词)。
现在,记住上面的定义,让我们创建一个类 'cat'...meowww
class Cat():
Run Code Online (Sandbox Code Playgroud)
要创建属性,请使用 def init (self, arg1, arg2) -(如下所示)。
“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')
Run Code Online (Sandbox Code Playgroud)
注意(上面)'mybreed' 是用户需要指定的输入参数,而 self.breed 是分配给 'mybreed' 参数的实例的属性。通常,它们是相同的(例如,两者的品种,self.breed = 品种)。在这里,它以不同的方式编码以避免混淆。
并且属性通常写为“self.attribute_name”(如上所示)。
现在,方法更像是动作或操作,您可以在类的主体内定义一个函数来执行某些操作,例如,杀死鼠标。方法还可以利用您在对象本身中定义的属性。
方法和属性之间的另一个主要区别是您如何调用它。
例如,假设我们使用上面定义的类创建了一个实例。
my_cat = Cat()
Run Code Online (Sandbox Code Playgroud)
要调用属性,请使用
my_cat.name
Run Code Online (Sandbox Code Playgroud)
或者
my_cat.breed
Run Code Online (Sandbox Code Playgroud)
对于方法,您调用它来执行某些操作。在 Python 中,您使用左括号和右括号调用方法,如下所示:
my_cat.kill_mouse()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22337 次 |
| 最近记录: |