构造方法“__init__()”
与普通方法不同的地方在于,当一个对象被创建后,会立即调用构造方法,该方法在类实例化时会自动调用。
# coding=gbk
#创建一个构造方法
class Foobar:
def __init__(self):
self.somevar=42
f=Foobar()
print(f.somevar)
输出:
42
创建一个类
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令蹲下"""
print(self.name.title()+"is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"rolled over!!")
方法__init__() 是构造方法,每当你根据Dog 类创建新实例时,Python都会自动运行它。方法__init__() 定义成了包含三个形参:self 、name 和age 。在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。每个与类相关联的方法调用都自动传递实参self ,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。创建Dog 实例时,Python将调用Dog 类的方法__init__() 。我们将通过实参向Dog() 传递名字和年龄;self 会自动传递,因此我们不需要传递它。每当我们根据Dog 类创建实例时,都只需给最后两个形参(name 和age )提供值。
根据类创建一个实例
# coding=gbk
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令蹲下"""
print(self.name.title()+"is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"rolled over!!")
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")#访问属性name
print("My dog is " + str(my_dog.age) + " years old.")
my_dog.sit()#调用类中的方法
my_dog.roll_over()
输出:
My dog's name is Willie.
My dog is 6 years old.
Willieis now sitting.
Willierolled over!!