"""
面向对象 三大特性
封装 继承 多态
python 本身是一种弱类型语言,本身就支持多态
继承:多重继承 执行某个方法
寻找方法的规律: 从下往上 从左往右
始终记得self对象代表的是谁,那个对象调用的方法,self酒代表的是谁
通过super(类,self).__init()可以调用父类的构造方法
还可以通过类名.__init__(self)方法也可以调用父类的构造函数 但不推荐使用
面向对象的成员 以及 修饰符
同样也可以通过反射机制来访问类或者对象的属性和方法
module_str = input("请输入导入的模块名:")
modu = __import__(module_str)
cls = input("请输入类型名:")
if hasattr(modu,cls):
C = getattr(modu,cls)
obj = C()
fun_str = input("请输入要调用的函数:")
if hasattr(obj,fun_str):
fun = getattr(obj,fun_str)
fun();
attr_str = input("请输入要查看的属性:")
if hasattr(obj,attr_str):
attr = getattr(obj,attr_str)
print(attr)
#################tesy.py############
class A:
def __init__(self):
self.name = "ylk"
print("AAAAAA")
def show(self):
print("BBBB")
类的静态成员与方法
注意python与其他语言的差异,并没有单独声明类里面的成员
因此直接将成员写在类里面就表示是类的静态成员
而类的静态方法是通过装饰器去完成的
@staticmethod即可表示是类的静态方法,通过调用的是python的内置函数staticmethod()
也可以通过时候带self参数来区分,只有非静态方法才需要类的实例
访问时,既可以通过类也可以通过对象去访问,但不推荐 ,在访问是最好通过类去访问
面向对象之类方法
python不同于其他语言,其中还包含类方法,通过装饰器@classmethod实质上调用python内置函数
classmethod()函数实现
将一个方法声明为类方法的时候,至少有一个参数cls
@classmethod
def f(cls):
print(cls)
通过类调用类方法时,自动会将类的名称传入
@property
将类的方法的访问方式变为与类的成的成员变量的访问方式一样
class A:
@property
def fun_name(self):
...
@fun_naem.setter
def fun_name(self,value):
print(value)
obj = A()
obj.fun_name 直接调用fun_naem方法
obj.name = 123
通过@property将方法变为成员变量的访问方式
通过@fun_name.setter用来修改@property装饰的函数
python不同于其他语言访问控制只分为私有和公有的
私有的只能在类的内部进行访问 公有的都可以访问
python是通过__两下划线来进行区别公有和私有的,并没有public和private关键字
__call__(self,*arg,**kwargs)在生成对象后加上()调用的是该方法
对象[""]调用的是__getitem__(self,item)
对象[""] = value 调用的是__setitem__(self,key,value)
del 对象[""]调用的是__delitem__(self,item)
在python3.x版本中切片操作也是执行的这几个函数
传递参数的时,先将切片的内容传递给slice对象,然后传递的是slice对象
__dict__列出类与对象的所有成员
__str__对对象进行输出时,输出的时该方法的返回值
"""
python之面向对象知识点总结
最新推荐文章于 2021-12-14 16:06:07 发布