Dom*_*bey 1 python variables class
以下是Zed Shaw的"学习Python困难之路"教程40的代码片段:
class Song(object):
def __init__(self, lyrics):
self.lyrics = lyrics
def sing_me_a_song(self):
for line in self.lyrics:
print line
Run Code Online (Sandbox Code Playgroud)
为什么Python在定义"sing_me_a_song"函数时允许使用"self.lyrics"?是因为在" init " 下定义的变量也可以在同一个类的其他地方使用吗?
谢谢.
实例变量
这称为实例变量.任何用self."前缀" 定义的变量都可以用在对象的任何方法中.通常会创建这样的变量__init__,因此可以从初始化对象的那一刻开始访问它们,尽管您可以在其他方法中定义实例变量.例如:
>>> class foo:
... def fun(self):
... self.heh=3
...
>>> f = foo()
>>> f.heh
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: foo instance has no attribute 'heh'
>>> f.fun()
>>> f.heh
3
Run Code Online (Sandbox Code Playgroud)
注意初始化实例变量之外的危险__init__; 如果在尝试访问它们之前未调用它们的初始化方法,则会出现错误.
类变量
这不要与"类变量"混淆,"类变量"是可以由类的任何方法访问的另一种类型的变量.可以为整个类设置类变量,而不仅仅是该类的特定对象.这是一个带有实例和类变量的示例类来显示差异:
class MyClass:
classVar = "I'm a class var."
def __init__(self):
self.instanceVar = "I'm an instance var."
def fun(self):
methodVar = "I'm a method var; I cannot be accessed outside of this method."
self.instanceVar2 = "I'm another instance var, set outside of __init__."
Run Code Online (Sandbox Code Playgroud)
关于"方法"与"功能"的说明
在你的问题中,你称之为sing_me_a_song"功能".实际上,它是班级的一种方法Song.这与常规的旧函数不同,因为它基本上与类相关联,因此也与该类的对象相关联.
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |