类中的函数称为方法
class Dog:
def __init__(self,name,age):
"""初始化name和age"""
self.name=name
self.age=age
def sit(self):
print(f"{self.name}is now sitting")
def roll_over(self):
print(f"{self.name} rolled over!")
my_dog=Dog('欢欢',6)
print(f"my dog`s name is {my_dog.name}.")
print(f"my dog is {my_dog.age} years old.")
my_dog.sit()
my_dog.roll_over()
"""
my dog`s name is 欢欢.
my dog is 6 years old.
欢欢is now sitting
欢欢 rolled over!
"""
形参self必不可少,而且必须位于其他形参前面,必须定义形参self的原因是:python在调用这个方法创建Dog实例时,将自动传入实参self,每个与实例相关的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问到类中的属性和方法。
通过实例访问的变量称为属性
练习9-1,9-2
class Restaurant(object):
"""docstring for Restaurant"""
def __init__(self, restaurant_name,cuisine_type):
self.restaurant_name=restaurant_name
self.cuisine_type=cuisine_type
def describe_restaurant(self):
print(f"名字是:{self.restaurant_name},烹饪风味是{self.cuisine_type}")
def open_restaurant(self):
print(f"{self.restaurant_name}餐厅正在营业")
the_restaurant=Restaurant('十里八湘','川菜馆')
print(f"这个店的名字是{the_restaurant.restaurant_name}")
print(f"这个店的口味类型是{the_restaurant.cuisine_type}")
the_restaurant.describe_restaurant()
the_restaurant.open_restaurant()
"""
这个店的名字是十里八湘
这个店的口味类型是川菜馆
名字是:十里八湘,烹饪风味是川菜馆
十里八湘餐厅正在营业
"""
练习9-3
class User:
def __init__(self,first_name,last_name,gender):
self.first_name=first_name
self.last_name=last_name
self.gender=gender
def describe_user(self):
print(f"姓:{self.first_name},名:{self.last_name},性别:{self.gender}")
def greet_user(self):
print(f"欢迎{self.first_name}{self.last_name}{self.gender}士!!!")
user1=User('王','大攀','男')
user2=User('李','俊俊','女')
user1.describe_user()
user1.greet_user()
user2.describe_user()
user2.greet_user()
"""
姓:王,名:大攀,性别:男
欢迎王大攀男士!!!
姓:李,名:俊俊,性别:女
欢迎李俊俊女士!!!
"""
给属性指定默认值,修改属性的值
练习9-4
class Restaurant(object):
"""docstring for Restaurant"""
def __init__(self, restaurant_name,cuisine_type):
self.restaurant_name=restaurant_name
self.cuisine_type=cuisine_type
self.number_served=0
def describe_restaurant(self):
print(f"名字是:{self.restaurant_name},烹饪风味是{self.cuisine_type},有{self.number_served}人就餐")
def open_restaurant(self):
print(f"{self.restaurant_name}餐厅正在营业")
def set_number_served(self,number):
self.number_served=number
def increment_number_served(self,inumber):
self.number_served+=inumber
the_restaurant=Restaurant('十里八湘','川菜馆')
the_restaurant.set_number_served(16)
the_restaurant.describe_restaurant()
the_restaurant.increment_number_served(10)
the_restaurant.describe_restaurant()
#名字是:十里八湘,烹饪风味是川菜馆,有16人就餐
#名字是:十里八湘,烹饪风味是川菜馆,有26人就餐
练习9-5
class User:
def __init__(self,first_name,last_name,gender,login_attempts):
self.first_name=first_name
self.last_name=last_name
self.gender=gender
self.login_attempts=login_attempts
def describe_user(self):
print(f"姓:{self.first_name},名:{self.last_name},性别:{self.gender}")
def greet_user(self):
print(f"欢迎{self.first_name}{self.last_name}{self.gender}士!!!")
def increment_login_attempts(self):
self.login_attempts+=1
print(f"现有人数{self.login_attempts}")
def reset_login_attempts(self):
self.login_attempts=0
print(f"现有人数{self.login_attempts}")
user1=User('王','子','男',1)
user1.describe_user()
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.reset_login_attempts()
user1.greet_user()
"""
姓:王,名:子,性别:男
现有人数2
现有人数3
现有人数4
现有人数0
欢迎王子男士!!!
"""