12.18---python类

发布时间 2023-12-18 18:34:07作者: 握嫩
class Dog:                                                      # 1
    def __init__(self,name,age):                               # 2 & 3
        self.name = name                                        #4
        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('Willie',6)                        #5

print(f"My dog's name is {my_dog}.")
print(f"My dog's {my_dog} years old .")
my_dog.sit()
my_dog.roll_over()

#1.在python中首字母大写的名称指的是类。

#2.方法__init__(): 其又被称为构造器,是一个特殊的方法。每当根据类创建新实例时,python都会自动运行它。该函数总是再类被初始化时执行。也可以理解为使用__init__()方法传递参数,比如赋值给对象属性。必须要注意的是:__init__()前后是两个下划线。

#3.在这个方法的定义中,形参self必不能少,且必须位于其他形参的前面。因为python调用这个方法来创建Dog实例时,将自动传入实参self。每个与实例相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

#4.这两个变量都有前缀self。以self为前缀的变量可供类中的所有方法使用,通过类的任何实例来访问。这两个变量分别获取了形参name、age相关联的值,然后该变量被关联到当前创建的实例。

#5.使用实参Willie和6调用Dog类的方法__init__(),创建一个表示有特定小狗的实例,并使用提供的值来设置属性name和age。

class Car:

    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0                  #1
        
    def 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','a8',2023)
print(my_new_car.descriptive_name())
my_new_car.read_odometer()

这是一个car的类,与前面的Dog类一样定义了方法__init__(),这个方法第一个形参为(self)

#1.创建实例时,有些属性无需通过形参来定义,可在方法__init__()中其指定默认值。

 

my_new_car = Car('audi','a8',2023)
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23
my_new_car.read_odmeter()

这个方法是直接通过实例访问它进行修改,它的里程已经变成了23。