将instance / class(self.something
)的属性传递给同一个类的静态方法是否有意义?
没有静态方法的示例:
from intel import i5
from kingston import ddr3
from windows import Prompt
class PC:
def __init__(self, username, password, cpu, ram):
self.username = username
self.password = password
self.cpu = cpu
self.ram = ram
def _log_in(self, login_prompt):
login_prompt.enter(self.username, self.password)
def start_up(self):
# boot_up and do stuff...
login_prompt = Prompt()
self._log_in(login_prompt)
# auto-run applications and do stuff...
静态方法示例:
from intel import i5
from kingston import ddr3
from windows import Prompt
class PC:
def __init__(self, username, password, cpu, ram):
self.username = username
self.password = password
self.cpu = cpu
self.ram = ram
@staticmethod
def _log_in(login_prompt, username, password):
login_prompt.enter(username, password)
def start_up(self):
# boot_up and do stuff...
login_prompt = Prompt()
self._log_in(login_prompt, self.username, self.password)
# auto-run applications and do stuff...
在这两种情况下,使用情况都是一样的:
my_computer = PC('user', 'password', i5, ddr3)
my_computer.start_up()
答案 0 :(得分:0)
此代码错误
@staticmethod
def _log_in(self, login_prompt, username, password):
login_prompt.enter(username, password)
静态方法不会收到self
,即实例。您没有在静态方法中获得对实例的隐式引用。您可以将静态方法视为普通函数,但可以从实例中调用。
如果您不打算公开_log_in
,请不要提供参数,只在其中使用self
。