面向对象,主要知识点为:
1、定义类
class Person:
pass
2、实例化对象
son = Person() # 即为创建了一个对象
3、属性
类属性
class Person:
name = '张三' # name即为类的属性
实例属性
class Person:
def __init__(self,name):
slef.name = name # 写在__init__中的参数即为实例属性
私有属性
class Person:
def __init__(self,name):
self.__age = 18 # 私有属性即为普通属性添加两个下划线
4、方法:
实例方法 ps:方法实力上就是一个普通函数,只是第一个参数为self
class Person:
def play(self): # 函数play即为实例方法
pass
类方法 ps: 需要再函数上方添加一个装饰器 @classmethod,并且第一个参数为cls
class Person:
@classmethod
def game(cls): # 带有装饰器@classmethod的函数game即为类方法
pass
静态方法:ps 静态方法就是一个普通的函数,只是在函数上添加了装饰器 @staticmethod
class Person:
@staticmethod
def show(): # 带有装饰器staticmethod的函数show即为静态方法
pass
私有方法:
class Person:
def __say(self): # ————say即为私有方法
pass
5、其他
限制属性:在某些时候,需要限制实例对象传入指定参数,一般使用关键字__slots__
class Person:
__slots__ = ('name','age') # 表示该类只接收name、age参数,其他参数不接收
例题
class Person:
__slots__ = ('name', 'age')
def __init__(self, name, age, addr):
self.name = name
self.age = age
self.addr = addr
def print_info(self):
print(f'{self.name}今年{self.age}岁,住在{self.addr}')
son = Person('张三', 18, '北京')
son.print_info()
修正后
class Person:
__slots__ = ('name', 'age')
def __init__(self, name, age):
self.name = name
self.age = age
# self.addr = addr
def print_info(self):
print(f'{self.name}今年{self.age}岁')
son = Person('张三', 18)
son.print_info()