【发布时间】:2018-03-09 11:49:09
【问题描述】:
将实例/类 (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()
【问题讨论】:
-
你的第一个代码块更容易阅读。
-
两种实现都是正确的并且功能上是相同的,所以这实际上是一个上下文和个人品味的问题。
标签: python class optimization static-methods