Python中的类和对象

类:一类事务
对象:一个具体的实例
对象就是类的实例

定义

在python中定义一个类

class 类名:
    数据;属性
    功能:方法

类名:一般首字母大写
类包含类属性,方法

class Hello:
    i = 1 # 类属性

    def f(self): # 方法
        return 'hello world'

实例化

当我们有一个类名为Person的类,一个变量obj
我们该如何让obj成为Person这个类呢,这时我们我们就用到了实例化

obj = Person() # 实例化

实例化实质
1.申请一个空的对象
2.初始化

__new__:申请一个新的对象
__init__:对上边创建的对象进行初始化

属性

类属性,到底是属于对象还是属于类的。
属于类的

对象属性:每一个实例化对象,都有自己独立的属性
每一个对象都有但是隔离

类属性位置:在类中,方法外
访问:
类名.属性名
对象.属性名

对象属性:在__init__方法中
访问:
对象.属性名

方法

函数和方法的区别:参数中是否有self
例如

继承

子类从父类里继承了类属性和方法

class 类(父类):
    数据和功能

object是所有类的父类

魔法 / 特殊的方法

在python中为__name__的方法为魔法 / 特殊的方法
例如

def __repr__(self): 机器可读
def __str__(self): 人类可读
def __len__(self): 字符长度
def __eq__(self, other): 等于
def __le__(self, other): 小于等于
def __ge__(self, other): 大于等于
def __gt__(self, other): 大于
def __lt__(self, other): 小于
def __ne__(self, other): 不等于
def __abs__(self): 绝对值
def __bool__(self): 真假
def __mul__(self, other): 乘法
def __sub__(self, other): 减法
def __call__(self, *args, **kwargs): 调用

练习

定义一个Book类:
定义类属性: count
定义对象属性或变量: title(书名), author(作者), publish(出版社), price(价格)
定义对象相加操作: book1 + book2 = book1.title + book2.title
举例: book1 + book2 = Java程序设计Python程序设计
定义打印对象的输出: 使用print打印 book1 => 书的名字-作者-出版社-价格
举例: print(book1) => Python程序设计-王铮-机械出版社-22
定义调用对象的方法:call(): 并让其返回书的名字
定义静态方法: static_print_obj: 执行输出print(“This is Static Method of class Book”)
定义类方法:class_print_obj: 执行输出print("This is class Method of class Book ")
按要求执行底下的操作:
实例化对象book1: Python程序设计, 王铮, 机械教育出版社, 22
实例化对象book2: Java程序设计, 李刚, 清华大学出版社, 34
执行book1 + book2: 并输出相加的结果
执行print(book1)
执行 book1()
调用类变量,进行赋值100, 输出类变量
调用book1对象,并修改书名: Python程序设计修改为流畅的Python
调用静态方法 static_print_obj
调用类方法 class_print_obj

class Book:
    count = None
    def __init__(self, title, author, publish, price):
        self.title = title
        self.author = author
        self.publish = publish
        self.price = price

    def __add__(self, other):
        return self.title + other.title

    def __str__(self):
        return self.title + '-' + self.author + '-' + self.publish + '-' + str(self.price)

    def __call__(self, *args, **kwargs):
        return self.title

    @staticmethod
    def static_print_obj():
        print("This is Static Method of class Book")

    @classmethod
    def class_print_obj(cls):
        print("This is class Method of class Book")

book1 = Book('Python程序设计', '王铮', '机械教育出版社', 22)
book2 = Book('Java程序设计', '李刚', '清华教育出版社', 34)

print(book1 + book2)

print(book1)

print(book1())

Book.count = 100
print(Book.count)
print(book1.count)

book1.title = '流畅的python'
print(book1.title)

Book.static_print_obj()
book1.static_print_obj()

Book.class_print_obj()
book1.class_print_obj()

Python程序设计Java程序设计

Python程序设计-王铮-机械教育出版社-22

Python程序设计

100
100

流畅的python

This is Static Method of class Book
This is Static Method of class Book

This is class Method of class Book
This is class Method of class Book


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值