特别篇 python面向对象

在python·中,一切皆为对象,对象可以通过类来创建,类是对象的抽象,它定义了对象的属性和行为。

1、类与实例

类是对现实世界描述的一种类型,它是抽象的,约定了未来实例该有的内容,是实例的模版_init__是类的构造方法,当创建类的对象时,会自动调用这个方法。self表示对象本身,其他参数就是对象的属性。方法是类的成员函数,接受的第一个参数是self,表示对象本身。在类内使用方法时,不需要传递这个参数。外部访问方法时,需要在对象后面加上方法名,如:对象.方法名()实例是调用类则生成实例,他是具体的,有具体数据,实例的内容依赖于类

class Dog:
    # 类属性
    species = '犬科'
    
    # 构造方法
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # 方法
    def bark(self):
        print("汪汪汪")
        
# 创建对象
dog1 = Dog('大黄', 2)
dog2 = Dog('二黄', 1)
 
# 访问属性
print(dog1.name)
print(dog2.age)
 
# 调用方法
dog1.bark()

2、初始化方法和实例属性

属性是类中定义的变量,用于存储对象的状态或数据

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
#name和age就是类Person的属性

方法是类中定义的函数,它用于定义对象的行为

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"Hello, my name is {self.name} and I am {self.age} years old."
#greet()就是Person类的方法

3、封装、继承、多态

封装是将数据(属性)和行为(方法)包装到一个单元中,通过公共接口进行访问,在python中通过访问控制和方法定义来实现封装。

继承是允许以个类(父类)派生出另一个类(子类)的属性和方法,子类可以扩展或修改父类的行为。在python中使用类名后跟括号中父类的名称来实现继承。

class Student(Person):
    def __init__(self, name, age, student_id):
        super().__init__(name, age)
        self.student_id = student_id

    def study(self):
        return f"{self.name} is studying."
#Student类继承了Person类,并且添加了一个额外的student_id属性和study()方法

多态是允许同一个方法名在不同的类中有不同的实现,提高了代码的灵活性和可重用性。

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

# 使用多态
dog = Dog("Buddy")
cat = Cat("Whiskers")

print(dog.speak())  # 输出: Buddy says Woof!
print(cat.speak())  # 输出: Whiskers says Meow!
#Animal 是一个抽象基类,Dog 和 Cat 是它的子类。它们都实现了 speak() 方法,但具体实现不同,展示了多态的特性。

4、类方法和静态方法

 类方法它的第一个形参一般是cls表示类本身,定义类方法需要使用@classmethod装饰器。

class Person:
    total_persons = 0
 
    def __init__(self, name):
        self.name = name
        Person.total_persons += 1
 
    @classmethod
    def show_total_persons(cls):
        print("Total persons: ", cls.total_persons)
 
p1 = Person("Tom")
p2 = Person("Jerry")
Person.show_total_persons()
#创建了一个‘Person’类来记录创建的总人数。定义一个类方法‘show_total_persons()’来显示总人数。在实例化两个‘Person’对象后,再使用‘Person.show_total_persons()’来显示人数

静态方法它没有特殊的形参,通过装饰器@staticmethod来将方法升级为静态方法,一般在项目中的辅助类一般都会使用静态方法

class Calculator:
 
    @staticmethod
    def add(x, y):
        return x + y
 
Calculator.add(3, 5)
#定义了一个静态方法‘add()’,然后在类名后面直接调用它

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值