🥳🥳Welcome Huihui's Code World ! !🥳🥳
接下来看看由辉辉所写的关于Python的相关操作吧
目录
🥳🥳Welcome Huihui's Code World ! !🥳🥳
一.类的定义
二.魔法方法
1.概念
2.常用的魔法方法
①__init__(self, ...)
②__str__(self)
③__repr__(self)
④_len__(self)
⑤_getitem__(self, key)
⑥__setitem__(self, key, value)
⑦__call__(self, ...)
⑧__eq__(self, other)
⑨__lt__(self, other)
三.属性
1.属性是什么?
2.属性的类型
①实例属性(Instance Attribute)
②类属性(Class Attribute)
③静态属性(Static Attribute)
3.实例属性与类属性的区别
四.封装
五.继承
六.多态
一.类的定义
语法:
class ClassName:
例子:
class Person:
在 Python 中,首字母大写的名称指的是类 这个类定义是可以不带 ( ) 括号中是指定的父类型
给Person类定义属性
class Person: """人类定义""" name: str = '小王' age: int = 18
编写对象&获取对象属性
p = Person() print(f"name:{p.name},age:{p.age}")
Python中对象的属性是可以动态变化的
p = Person() p.age = 30 p.gender = '女' print(f"name:{p.name},age:{p.age},gender:{p.gender}")
在类里面也能够定义方法(这里的方法是指定义在类里面的函数)
def love(self): pass
每个与类相关的方法调用时都自动传递实参self(谁调用了含有self的方法,那么谁就是那个self)
def love(self): print(f'{self.name}喜欢你')
当携带多个参数时,其他的参数要放在 self 之后
def eat(self, food: str): print(f'{self.name}喜欢吃{food}')
二.魔法方法
1.概念
python中的魔法方法是一些可以让你对类添加“魔法”的特殊方法,它们经常是两个下划线包围来命名的。 魔法方法可以使Python的自由度变得更高,在面向对象方面表现的更好
2.常用的魔法方法
①
__init__(self, ...)作用:对象初始化方法,创建对象时自动调用
用法示例:
class Person:def __init__(self, name, age):self.name = nameself.age = ageperson = Person("Alice", 20)
②__str__(self)
作用:对象的字符串表示方法,用于打印对象时自动调用
用法示例:
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Person(name={self.name}, age={self.age})"person = Person("Alice", 20) print(person) # 输出:Person(name=Alice, age=20)
③__repr__(self)
作用:对象的字符串表示方法,用于在交互式环境中显示对象时自动调用
用法示例:
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f"Person(name={self.name}, age={self.age})"person = Person("Alice", 20) person # 输出:Person(name=Alice, age=20)
④_len__(self)
作用:对象的长度方法,用于获取对象的长度
用法示例:
class MyList:def __init__(self, data):self.data = datadef __len__(self):return len(self.data)my_list = MyList([1, 2, 3]) print(len(my_list)) # 输出:3
⑤_getitem__(self, key)
作用:对象的长度方法,用于获取对象的长度
用法示例:
class MyList:def __init__(self, data):self.data = datadef __len__(self):return len(self.data)my_list = MyList([1, 2, 3]) print(len(my_list)) # 输出:3
⑥__setitem__(self, key, value)
作用:对象的索引赋值方法,用于通过索引设置对象的元素
用法示例:
class MyList:def __init__(self, data):self.data = datadef __setitem__(self, index, value):self.data[index] = valuemy_list = MyList([1, 2, 3]) my_list[0] = 4 print(my_list.data) # 输出:[4, 2, 3]
⑦__call__(self, ...)
作用:对象的调用方法,用于将对象作为函数调用
用法示例:
class Adder:def __init__(self, n):self.n = ndef __call__(self, x):return self.n + xadd5 = Adder(5) print(add5(3)) # 输出:8
⑧__eq__(self, other)
作用:对象的相等比较方法,用于判断两个对象是否相等
用法示例:
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __eq__(self, other):return self.name == other.name and self.age == other.ageperson1 = Person("Alice", 20) person2 = Person("Alice", 20) print(person1 == person2) # 输出:True
⑨__lt__(self, other)
作用:对象的小于比较方法,用于判断两个对象的大小关系
用法示例:
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __lt__(self, other):return self.age < other.ageperson1 = Person("Alice", 20) person2 = Person("Bob", 25) print(person1 < person2) # 输出:True
三.属性
1.属性是什么?
属性是指对象的特征或状态,可以是对象的数据成员或方法。属性可以通过点号
.
或者getattr()
函数来访问2.属性的类型
①实例属性(Instance Attribute)
定义:属于实例对象的属性,每个实例对象都有自己的一份拷贝。实例属性通常在_init_()方法中初始化
示例:
class Person:def __init__(self, name, age):self.name = name # 实例属性self.age = age # 实例属性person = Person("Alice", 20) print(person.name) # 输出:Alice
②类属性(Class Attribute)
定义:属于类对象的属性,所有实例对象共享同一份拷贝 类属性通常在类定义中初始化
示例:
class Person:# 类属性def __init__(self, name, age):self.name = nameself.age = ageperson1 = Person("Alice", 20) person2 = Person("Bob", 25)
③静态属性(Static Attribute)
定义:属于类对象的属性,与类方法和静态方法一样,不需要访问实例对象或类对象,可以通过类名直接访问
示例:
class Person:count = 0 # 静态属性def __init__(self, name, age):self.name = nameself.age = agePerson.count += 1@staticmethoddef get_count():return Person.countprint(Person.get_count()) # 输出:0 person1 = Person("Alice", 20) person2 = Person("Bob", 25) print(Person.get_count()) # 输出:2
3.实例属性与类属性的区别
①python中,实例属性存储在一个字典(dict)中,对于属性的操作,都是在操作这个字典
②类属性同样是存储在字典中,只是这个字典是类的字典 可以通过类名和对象名来调用,但是只能通过类名修改,类属性对于该类对象是共享的 类的属性和方法存在在类的 dict 之中
class Plane(object):category = '飞机'# python中,类属性存储在一个字典(dict)中,对于属性的操作,都是在操作这个字典 print(Plane.__dict__)#{'__module__': '__main__', 'category': '飞机', '__dict__': <attribute '__dict__' of 'Plane' objects>, '__weakref__': <attribute '__weakref__' of 'Plane' objects>, '__doc__': None} p1, p2 = Plane(), Plane() print(p1.category, p1.category)#飞机 飞机 Plane.category = '拖拉机' print(p1.category, p2.category)#拖拉机 拖拉机 print(p1.category, p1.category)#拖拉机 拖拉机 p1.category = '拖拉机' print(p1.category, p2.category)#拖拉机 拖拉机# python中,实例属性也存储在一个字典(dict)中,对于属性的操作,都是在操作这个字典 p1.name = '车车🚗' print(p1.__dict__)#{'category': '拖拉机', 'name': '车车🚗'}# 也可以直接操作这个字典 p1.name = '车车🚗' p1.__dict__['size'] = '大' print(p1.size) print(p1.__dict__)#{'category': '拖拉机', 'name': '车车🚗', 'size': '大'}
四.封装
概念:封装是指将数据和行为封装在一个类中,对外部隐藏实现细节,只暴露必要的接口。在Python中,可以使用属性和方法来实现封装
示例:
class Person:def __init__(self, name, age):self.__name = nameself.__age = agedef get_name(self):return self.__namedef set_name(self, name):self.__name = namedef get_age(self):return self.__agedef set_age(self, age):self.__age = ageperson = Person("Tom", 18) print(person.get_name()) # 输出:Tom person.set_name("Jerry") print(person.get_name()) # 输出:Jerry
五.继承
定义:继承是指一个类可以继承另一个类的属性和方法。被继承的类称为父类或基类,继承的类称为子类或派生类。在Python中,可以使用
class 子类名(父类名)
的语法来实现继承示例:
class Animal:def __init__(self, name):self.name = namedef eat(self):print(f"{self.name} is eating.")class Dog(Animal):def bark(self):print(f"{self.name} is barking.")dog = Dog("Tommy") dog.eat() # 输出:Tommy is eating. dog.bark() # 输出:Tommy is barking.
六.多态
定义:多态是指同一种方法可以在不同的对象上有不同的表现形式。在Python中,多态可以通过方法重写和方法重载来实现
示例:
class Animal:def __init__(self, name):self.name = namedef make_sound(self):passclass Dog(Animal):def make_sound(self):print(f"{self.name} is barking.")class Cat(Animal):def make_sound(self):print(f"{self.name} is meowing.")animals = [Dog("Tommy"), Cat("Kitty")] for animal in animals:animal.make_sound()
好啦,今天的分享就到这了,希望能够帮到你呢!😊😊