python面向对象程序设计

面向对象程序设计

  • 类:抽象 (类似于图纸,没有实际数据)
  • 对象:具体,即属性和方法的集合 (类似于真正的房子,实际数据)
  • 三大特征:封装,继承,多态
  • 权限访问
    • 私有属性:__variable(以两个下划线代表私有属性)
      • 定义:slots=[’__name’,’__flag’]//没有初始化值
      • 访问:用一组get,set函数
    def setName(self,name):
    	self.__name=name#不要忘记用self.+变量名
    def getName(self):
    	return self.__name
    
    • 方法:def 函数名(self):
      • 内置方法:(1)__init()->实例化对象时自动调用,里面可以重写
        重写
        实例化对象
        (2)__str():->打印时输出,不重写时打印对象的地址,重写时用return返回
class Turtle:
    color="green"
    weight=9
    def climb(self):
        print("爬")
        
    def __str__(self):
        return "我是一只小乌龟"
    def __init__(self):
        print("aaa")
tt = Turtle()
print(tt)

(3)__add():->定义两个类的加

class Point:
    __slots__=['x','y']
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def __str__(self):
        return "该点的坐标为x="+str(self.x)+",y="+str(self.y)+"这个x和y分别代表该点的x坐标值和y坐标值"
    
    def __add__(self,other):
        return (self.x+other.x)/2,(self.y+other.y)/2
    
p1 = Point(3,4)
p2 = Point(5,6)
xx = (p1+p2)[0]
yy = (p1+p2)[1]
print("p1和p2的中位数xx="+str(xx)+",yy="+str(yy))
  • 继承
    • Class Dad:
    • Class Son(Dad):
class Person:
    __slots__=['pname','psex','page','pheight']
    def __init__(self,name,sex,age,height):
        self.pname=name
        self.psex=sex
        self.page=age
        self.pheight=height
        
    def run(self):
        print("跑")
        
    def sing(self):
        print("唱")
    
    def study(self):
        print("学习")
        
class Student(Person):
    def study(self):
        print(self.pname+"爱学习")
        
p = Person('张三', '男', 25, 182)

stu = Student('张三', '男', 26, 182)
stu.study()
  • 多态
class Animal:
    def talk(self):
        print("吼吼")
        
class Cat(Animal):
    def talk(self):
        print("喵喵")
        
class Dog(Animal):
    def talk(self):
        print("旺旺")
        
class Pig(Animal):
    def talk(self):
        print("哼哼")
        
a = Animal()
a.talk()
c=Cat()
c.talk()

a=c
a.talk()

d = Dog()
d.talk()
a=d
a.talk()
  • 三大方法

    • 实例方法(self)跟个体自身密切相关

      • def setname(self,name):
    • 类方法(cls)与个体自身有关,但不依赖于个体

      • @classmethod声明这是一个类方法
      • def setfee(cls):
      • cls.fee+=100
    • 静态方法:没有参数,不需要用到实例的属性和方法

      • @staticmethod
      • def checkname():
      • if name.isalpha():
      • return True
  • 怎么来理解这三大方法?

  • 就好比,一个人可以跑,可以跳,可以学习,这是他的实例方法,但是他所交的学费,和其他人都一样,和本身没有太大关系,这就是类方法,检查输入一个人的名字是不是字母,也只跟外部输入的变量有关,与自身的属性无关,这就是静态方法。

Python向对象程序设计是一种编程范式,它将程序看作是一系列对象的集合,每个对象都有自己的属性和方法。在Python中,可以使用抽象基类(Abstract Base Class,ABC)来实现抽象类,抽象类是不能被实例化的类,只能被其它类继承和实现。 在Python中,定义一个类可以使用class关键字,可以在类中定义构造方法(__init__)和其他方法。构造方法用于初始化对象的属性,其他方法用于描述对象的行为。 例如,定义一个Car(汽车)类,可以使用构造方法来初始化汽车的名称,然后定义一个getName方法来获取汽车的名称。可以通过创建Car类的对象来使用这些方法。 另外,在Python中可以定义父类和子类,子类可以继承父类的属性和方法,并且可以重写父类的方法。可以使用super关键字来调用父类的方法。 例如,定义一个People(人)类,其中包括构造方法和公有方法speak,然后定义一个Student(学生)类,继承自People类,并且重写了speak方法。可以创建Student类的对象,并调用其自己定义的speak方法和父类的speak方法。 总之,Python面向对象程序设计提供了丰富的语法和特性,可以利用类、对象、继承和重写等概念来构建复杂的程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【python面向对象程序设计(基础篇)](https://blog.csdn.net/m0_67388084/article/details/128057443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值