python面向对象

面向对象

# 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。


# 在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。


# class关键字是定义类的关键,括号是继承额类,支持多继承
class Student():
       pass

实例

# 定义类之后就可以通过类来创建实例,类名也可以获取类本身
print(Student)

# 类复制给变量,和方法一样类通过类名和括号调用,括号传递构造方法的参数
student=Student()
print(student)
<class '__main__.Student'>
<__main__.Student object at 0x0000022BBF77C790>

构造方法

# 类的__init__是构造方法
class Student(object):
    def __init__(self,name,id,address):
        self.name=name
        self.id=id
        self.address=address
    def newStudent(self):
        print("Student(name={0},id={1},address={2})".format(self.name,self.id,self.address))

student=Student('zhansna',12,'beijin')
student.newStudent()
Student(name=zhansna,id=12,address=beijin)
# 在构造方法中定义的变量为实例变量,只有在实例中才可以访问

类方法

# 类方法和普通的函数相比,只有一点不同,类方法第一个参数永远this,并且调用时不用传递该参数。

# this表示类本身

class Student(object):
    def __init__(self,name,id,address):
        self.name=name
        self.id=id
        self.address=address
    def newStudent(self):
        print("Student(name={0},id={1},address={2})".format(self.name,self.id,self.address))
        
# newStudent就是类方法,通过实例化类来调用类方法
Student('lihua',2,'tianjin').newStudent()
Student(name=lihua,id=2,address=tianjin)
# 方法处理定义在类中还可以定义在构造方法中为实例方法,只有在实例中才可以访问,不常用。


# 类方法可以通过_来封装

类变量

# 类的变量可以定义在类中为成员变量
# 类的变量可以定义在构造方法中为实例方法,创建实例才可以访问
# 类的变量定义在方法中为局部方法

class Person(object):
    __name__=None
    __age__=None
    
    def __init__(this,name,age):
        this.__name__=name
        this.__age__=age
    def showPerson(this):
        print('Person(name={0},age={1})'.format(this.__name__,this.__age__))
Person('lihua',22).showPerson()
Person(name=lihua,age=22)
继承
# class关键字定义类后,括号中写该类的继承类
class Student():
    pass

# 未定义默认object,所有类都继承object

class Animal(object):
    name=None
    shout=None
class Dog(Animal):
封装

在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名。

要定义私有变量只能是___开头

Person('zhansan',22).__name__
'zhansan'
class Person1(object):
    name=None
    __age__=None
    __id=None
    def __init__(self,name,age,id):
        self.name=name
        self.__age__=age
        self.__id=id
person1=Person1('zhansan',22,123456789)
print(person1.name)
print(person1.__age__)
print(person1.__id)

zhansan
22



---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_8584/1129592823.py in <module>
     10 print(person1.name)
     11 print(person1.__age__)
---> 12 print(person1.__id)


AttributeError: 'Person1' object has no attribute '__id'
# 类变量可以在构造方法中定义,实例变量只能在实例中访问

# 通过定义setter和getter方法对成员变量更改和获取
多态
# 继承的最大的好处是子类获得了父类的全部功能。

# 子类也可以增加一些额外的方法,或对父类的方法重写

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xvwen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值