类 定义 通用行为,可以模拟任何东西, 根据 类来创建对象被称为 实例化。每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。 使用面向对象编程 可模拟现实情景。
例如
class Dog():
“”“一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性 name , age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
def roll_over(self):
"""模拟小狗被命令时打滚"""
my_dog = Dog('willie', 6)
print("My dos is " + str(my_dog.age) + " years old.")
在Python中,首字母大写的名称指的是类. 这个类定义中的括号是空的,因为我们要从空白创建这个类。
类中的函数 称为方法,所有有关函数的一切 都适用于方法。唯一重要的差别就是 调用方法的方式。
__init__()是一个特殊的方法, 创建新的实例时,Python都会自动运行它。在这个方法的名称中,开头 和 末尾各有两个划线,这是一种约定,避免Python默认方法 和 普通方法发生名称冲突。
在__init__()方法中,参数self必不可少,还必须位于其他形参的前面。创建实例时,将自动传入实参self. 每个与类相关联的方法调动都自动传递实参self, 它是一个指向实例本身的引用,让实例能够访问类中的属性 和 方法。 self会自动传递,所有实例化的对象,不用传递它。
以self为前缀的变量都可供类中的所有方法使用,还可以通过类的任何实例来访问这些变量.
访问实例的属性,可使用句点表示法。 例如 访问my_dog的属性name的值:
my_dog.name
python先找到实例my_dog, 再查找与这个实力相关联的属性name. 在 Dog类中引用这个属性时,使用的是self.name.
str(my_dog.age)将 my_dog的属性age的值 6 转换为字符串。
再看看自己的做的作业
看看朋友们指出的错误
最后总结一下 出现的知识点
1) 方法的调用一定要有(), r1.describe_restaurant 要改成 r1.describe_restautant(). 我的本意是使用 类Restanrant的方法,利用方法去输出 2 个print语句。
所以直接方法调用即可。
即 print ("Welcome to " + r1.describe_restaurant + ".") 改为 r1.describe_restaurant()
2) 你的方法里是打印,不是返回,所以调用的时候不用print了, 不然print出来多了一个none
3) 直接打印属性 是不用()的,调用 方法是要()
最后的结果
领取专属 10元无门槛券
私享最新 技术干货