发布时间:2023-04-03 11:30
答:Python并不严格区分public和private,只体现在代码编写规范上:
_xxx
"单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问;__xxx
" 双下划线 " 开始的是私有成员(变量/方法) ,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据;__x__
前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。答:通过装饰器构造一个类方法,例如:
import time
class Date:
#主构造函数
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
#可选构造函数
@classmethod
def today(cls,td_time): # td_time是一个字典
return cls(td_time.tm_year, td_time.tm_mon, td_time.tm_mday)
其中,@classmethod
的作用是在class内实例化class,而cls
参数指代的就是当前所在类;可以看到,可选构造函数其实是类的一个方法,该方法重写/扩展了类的构造函数,本身还是会调用类原始的构造函数;使用类方法的另一个好处就是在继承的时候,保证了子类使用可选构造函数构造出来的类是子类的实例而不是父类的实例。
ref:https://blog.csdn.net/qq_35499060/article/details/82795386
答:自定义的python模块有两种,一种是把模块写成类,类里面有要调用的方法。另一种写成单独的py文件,没有类,里面全是函数。
法一(定义class):在a.py文件中定义class A,而A包含a1方法,则此时,可以通过如下操作调用自定义模块:
from a import A
t = A() # 创建A的实例
t.a1() # 调用a1方法
法二(定义函数):在a.py文件中,定义了a1、a2等函数,则此时,可以通过如下操作调用自定义模块:
import a
t=a.a1() # 调用a1方法
ref:https://www.it610.com/article/1296020253200949248.htm