python中的类定义方法
python中的面向对象有三大特征: ① :封装 ②:继承 ③:多态
我们把现实生活中的实物封装为一个类,这个实物发出动作我们把它封装为一个方法,例如人是一个类,人具有身高、年龄等属性,人会跑步,那么跑步就是一个方法,而继承可以比作:教师是一个类,教师有工号和年龄,但是教师也属于人这个类,我们称教师为人的子类,下面介绍一些关于类定义的基本语法
基本语法:
class A(object):
# 定义类在实例化后具有的属性,一般我们用__init__方法来初始化实例
def __init__(self): # self是一个参数,这个self指向实例化后的对象,括号内还可以添加其他参数
self.a = 0
self.b = 0
# 定义实例化后实例拥有的方法:
def func(self):
print('我是A类的一员')
# 实例化一个类
a = A()
# self就是指向a的
# 在A类之外也可以调用a的属性,但是不建议这么做,面向对象强调封装性
print(a.b) # 输出结果 0
# 类外调用func方法
a.func() # 输出结果 我是A类的一员
运行结果图:
定义一个有参数的初始化函数:
举例:
class Person(object):
# 定义类在实例化后具有的属性,一般我们用__init__方法来初始化实例
def __init__(self, name, age): # self是一个参数,这个self指向实例化后的对象,括号内还可以添加其他参数
self.name = name
self.age = age
def func_1(self):
print(f'我今年{self.age}岁了')
# 初始化一个p对象
p = Person('tom', 30)
# 输出p的年龄
p.func_1()
由此案例我们得知:我们在尽量避免类外调用实例化属性的同时,若想要调用实例化属性,我们可以用实例化对象的函数去调用实例化属性。
定义私有属性:
还是这个案例,现在的name和age属性都是公有属性,可以在类外进行访问修改的,使用p.name = 'jnney'就可以将之修改,显然这种情况我们不希望发生,于是我们可以将其定义为私有属性,格式稍作修改,在name和age前面添加两条下划线,如下所示:
class Person(object):
# 定义类在实例化后具有的属性,一般我们用__init__方法来初始化实例
def __init__(self, name, age): # self是一个参数,这个self指向实例化后的对象,括号内还可以添加其他参数
self.__name = name
self.__age = age
def func_1(self):
print(f'我今年{self.__age}岁了')
# 初始化一个p对象
p = Person('tom', 30)
# 输出p的年龄
p.func_1()
这样一来,私有属性不允许类外访问,就不容易被修改,想要修改只能通过调用类内部的公有方法。
对于属性是如此,公有函数和私有函数的定义同理,在函数名前加上双下划线即可,私有属性和函数不可以在类外调用,想要调用只能通过类内的公有方法实现访问或是修改。
拓展:几种魔术方法:
①:__init__方法,实现对类对象的初始化
②:__str__方法,实现对类对象打印时输出想要输出的内容
③:__dict__方法,将类对象转化为字典形式
④:__del__方法,一个类对象的析构方法
简单以图片介绍:
①:
②:若没有__str__打印出来的p就是p对象的地址
③:
④:
此方法在类销毁时会自动调用,我们可以手写一个来测试一下,
关于类的实例化和属性初始化便介绍到这里,后续会随之更新继承和多态介绍。