python创建类和使用
#创建类 class起头
'''class Dog():#必须时class启头,且dog首字母大写
def __init__(self,name,age):#初始化属性name,age
#类里面的函数为方法,开头末尾两个下划线.self必不可少且为实参,是一个指向实例的引用,name,age为属性可以通过实例访问
self.age = age #获取与形参age相关联的值
self.name = name#获取与形参name相关联的值
def sit(self):#self必不可少
print(f"{self.name} is now sitting.")
def roll_over(self):
print(f"{self.name} rolled over!")
my_dog = Dog('a',6)
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")
b=my_dog.name#访问属性
print(b)
#使用方法
my_dog.sit()#查看方法输出结果,即上面方法里两个print的结果
my_dog.roll_over()’’’
#创建多个实例
'''class Dog():
def __init__(self,name,age):
self.age = age
self.name = name
def sit(self):
print(f"{self.name} is now sitting.")
def roll_over(self):
print(f"{self.name} rolled over!")
my_dog = Dog('a',6)
your_dog=Dog('b',3)
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")
my_dog.sit()
print(f"\nYour dog's name is {your_dog.name}.")
print(f"Your dog's name is {your_dog.age} years old.")
your_dog.sit()'''
#使用类实例
'''class Car:
def __init__(self,make,model,year):
self.make=make#初始化属性
self.model=model
self.year=year
def get_descriptive_name(self):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())'''
#给属性指定默认值 一开始汽车的里程为0,添加一个名odometer_reading的属性,
#其初始值总是为0。添加了一个名为read_odometer()的方法,用于读取汽车的里程表
'''class Car:
def __init__(self,make,model,year):
self.make=make#初始化属性
self.model=model
self.year=year
self.odometer_reading=0#初始里程为0
def get_descriptive_name(self):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
print(f"this car has {self.odometer_reading} miles on it")
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
#my_new_car.odometer_reading=23 直接修改属性的值
my_new_car.read_odometer()'''
#通过方法修改属性的值
'''class Car:
def __init__(self,make,model,year):
self.make=make#初始化属性
self.model=model
self.year=year
self.odometer_reading=0#初始里程为0
def get_descriptive_name(self):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
print(f"this car has {self.odometer_reading} miles on it")
def update_odometer(self,mileage):#新定义方法,mileage为形参,self不可少
self.odometer_reading=mileage
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23)
my_new_car.read_odometer()'''
#通过方法对属性值进行递增
'''class Car:
def __init__(self,make,model,year):
self.make=make#初始化属性
self.model=model
self.year=year
self.odometer_reading=0#初始里程为0
def get_descriptive_name(self):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
print(f"this car has {self.odometer_reading} miles on it")
def update_odometer(self,mileage):#新定义方法,mileage为形参,self不可少
self.odometer_reading=mileage
def increment_odometer(self,miles):
self.odometer_reading+=miles
my_new_car=Car('subaru','outback',2019)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23500)
my_new_car.read_odometer()
my_new_car.increment_odometer(100)
my_new_car.read_odometer()'''
#继承 子类的方法init()
'''class Car:
def __init__(self,make,model,year):
self.make=make#初始化属性
self.model=model
self.year=year
self.odometer_reading=0#初始里程为0
def get_descriptive_name(self):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
print(f"this car has {self.odometer_reading} miles on it")
def update_odometer(self,mileage):#新定义方法,mileage为形参,self不可少
self.odometer_reading=mileage
def increment_odometer(self,miles):
self.odometer_reading+=miles
class ElectricCar(Car):#子类electriccar,父类car,注意car的代码前面必须写出
#继承后属性初始化可以省略,使用super()
def __init__(self,make,model,year):
#初始化父类属性
super().__init__(make,model,year)
my_tesla=ElectricCar('tesla','s','2019')
print(my_tesla.get_descriptive_name())'''#直接调用父类的方法