在Python中实例化类的替代方法

时间:2010-08-01 19:15:33

标签: python

我正在编写我的python类并像这样实例化它们

class calculations_class():
    def calculate(self):
        return True

Calculations = calculations_class()

我想知道我是否正确地执行此操作,或者是否有其他方法可以实例化它们。谢谢!

5 个答案:

答案 0 :(得分:7)

除了其他答案正确指出的命名约定问题之外,你基本上没问题:调用类确实是迄今为止实例化该类的最常用方法。如果您需要任何每个实例初始化(最常见的是将某些实例属性设置为初始值),请务必定义执行它的__init__方法:

class Calculations(object):
  def __init__(self):
    self.running_total = 0  # or w/ever
  def calculate(self):
    ...

calc = Calculations()

当您因某种原因绕过初始化部分时(例如,在从某个文件,数据库中反序列化实例的过程中),通常会出现其他罕见的实例化类的方法。或来自其他进程的通信 - pickle模块是需要这种高级方法的一个很好的例子。在Python学习经历的这个阶段,我认为你根本不应该担心它们。

答案 1 :(得分:4)

嗯,类名往往是大写的(和camelcase),实例名称往往是小写的,但进一步说就是这样。

class CalculationsClass():
    def calculate(self):
        return True

my_calc_instance = CalculationsClass()

答案 2 :(得分:1)

这是正确的。

答案 3 :(得分:0)

这是正确的方法。您应该采取不同的做法:类名称应以大写字母开头,变量使用小写字母。

答案 4 :(得分:-1)

我倾向于使用以下格式:

class CCalculations():        #Classes always begin with "C"
    def __init__(self):
        self.foo = 0
        self.fooBar = 0       #Variables use camelCase

    def DoCalculations(self): #Methods use uppercase
        return true

    def getFoo(self): 
        return self.foo       #getters and setters use camelCase

原因各不相同:

  1. 将“C”放在类名前面可以轻松分离什么是类,什么是方法/函数。如果你使用一个好的IDE(我使用WingIDE),这将特别有用。因此,所有类都位于一个位置,因为它们都以C开头。此外,它使代码更具可读性,因为您确定您正在实例化类而不是调用函数。

  2. 对常规方法使用大写字母,对getter和setter使用camelCase意味着更重要的常规方法不会使用gets / sets来混淆命名空间。因此,在课堂上,因为事情按照ASCII-betical的顺序排列,你的真实方法是第一位的,而你的吸气剂和制定者则是最后的。

  3. 班级名称应为名词。方法应该是描述名词可以做的动作的动词。属性应该是描述名词外观的名词。