相关疑难解决方法(0)

在Python中访问类的成员变量?

class Example(object):
    def the_example(self):
        itsProblem = "problem"

theExample = Example()
print(theExample.itsProblem)
Run Code Online (Sandbox Code Playgroud)

如何访问类的变量?我试过添加这个定义:

def return_itsProblem(self):
    return itsProblem
Run Code Online (Sandbox Code Playgroud)

然而,这也失败了.

python methods return class

68
推荐指数
3
解决办法
17万
查看次数

我如何从一个类访问变量到另一个类?

我正在编写一个利用多个类的程序.我有一个专门用于确定一组变量值的类.然后,我希望能够使用其他类访问这些变量的值.我的代码如下:

class ClassA(object):
    def __init__(self):
        self.var1 = 1
        self.var2 = 2

    def methodA(self):
        self.var1 = self.var1 + self.var2
        return self.var1


class ClassB(ClassA):
    def __init__(self):
        self.var1 = ?
        self.var2 = ?

object1 = ClassA()
sum = object1.methodA()
print sum
Run Code Online (Sandbox Code Playgroud)

我使用classA初始化2个变量(var1和var2).然后我使用methodA来添加它们,将结果保存为var1(我认为这将使var1 = 3和var2 = 2).我想知道的是,如何让ClassB能够从ClassA获取var1和var2的值?

python variables class

27
推荐指数
2
解决办法
10万
查看次数

我为什么要在python中使用classmethod?

我在python中的某个类中编写了一个函数,人们建议我向这个函数添加一个@classmethod装饰器.

我的代码:

import random


class Randomize:
    RANDOM_CHOICE = 'abcdefg'

    def __init__(self, chars_num):
        self.chars_num = chars_num

    def _randomize(self, random_chars=3):
        return ''.join(random.choice(self.RANDOM_CHOICE)
                       for _ in range(random_chars))
Run Code Online (Sandbox Code Playgroud)

建议的更改:

    @classmethod
    def _randomize(cls, random_chars=3):
        return ''.join(random.choice(cls.RANDOM_CHOICE)
                       for _ in range(random_chars))
Run Code Online (Sandbox Code Playgroud)

我几乎总是只使用这个_randomize功能.

我的问题是:添加到classmethod装饰器的功能有什么好处?

python decorator class-method

7
推荐指数
1
解决办法
3158
查看次数

Python - 对继承感到困惑

我用3个类编写测试代码,并使用Chain of Responsibility设计模式,下面的代码

我打印print(c._abc is b._abc),答案是真的,但我原来认为两者是不同的.

然后,在第2轮,我取消注释self._abc = kwargs并评论其他3行,答案变为False.

为什么会这样?

import abc

class A:
    __metaclass__ = abc.ABCMeta

    _abc = {}

    def __init__(self,successor=None,**kwargs):
        self._successor = successor

    @abc.abstractmethod
    def handlerRequest(self):
        pass

class B(A):

    def __init__(self,successor=None,**kwargs):
        self._successor = successor
        print(kwargs)
        # self._abc = kwargs                 # round 2<---uncomment here
        self._abc['a'] = kwargs['a']         # round 2<---comment here
        self._abc['b'] = kwargs['b']         # round 2<---comment here
        self._abc['Hello'] = 'World'         # round 2<---comment here

    def handlerRequest(self):
        if (self._successor is not None):
            self._successor.handlerRequest()

        print(self._abc)

class …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
1
解决办法
272
查看次数

在Python中访问类变量的性能

我想知道在使用以下方法访问同一类的方法内的类变量(dict)时性能是否有任何差异:

self.class_variable_dict.add(some_key, some_value)
Run Code Online (Sandbox Code Playgroud)

ClassName.class_variable_dict.add(some_key, some_value)
Run Code Online (Sandbox Code Playgroud)

显然,只要没有具有相同名称的实例变量,两者都可以工作,但是有任何理由/用例我们应该优先选择其中一个吗?

python scope global-variables

4
推荐指数
1
解决办法
316
查看次数

Python ......静态变量?

可能重复:
Python中的实例变量与类变量

这两种情况之间有什么区别?如何在Python中处理它?

EX1

class MyClass:
     anArray = {}
Run Code Online (Sandbox Code Playgroud)

EX2

class MyClass:
     __init__(self):
          self.anArray = {}
Run Code Online (Sandbox Code Playgroud)

看起来像第一个例子中的数组被视为静态变量.Python如何处理这个问题,原因是什么?

python

1
推荐指数
1
解决办法
2509
查看次数

试图以面向对象的方式传递类和函数中的变量列表

我试图以面向对象的方式在Class和Function中传递变量列表但面临一些错误,我不明白它有什么问题我在Eclipse中使用PyDev

class Mydetails:
    __details = ''

    def __init__(self,details):     # constructor
        #self.__details['country'] = details['country']
        self.__details = details

    def set_element(self,details):
        self.__details = details

    def get_list(self,details):
        return self.__details

details = ['ABC','DEF','GHI','JKL']
pdetails = Mydetails()
pdetails.set_element(details)
print(pdetails.get_list())
Run Code Online (Sandbox Code Playgroud)

OUTPUT

Traceback (most recent call last):
  File "C:\workspace\python\pythonapp\list.py", line 18, in <module>
    pdetails = Mydetails()
TypeError: __init__() missing 1 required positional argument: 'details'
Run Code Online (Sandbox Code Playgroud)

python oop python-3.x

0
推荐指数
1
解决办法
3605
查看次数

在Python中创建类和对象

我有这个:

class Klasse1:
    variable1 = "haha"

print Klasse1.variable1
Run Code Online (Sandbox Code Playgroud)

还有这个:

class Klasse1:
    variable1 = "haha"

Object1 = Klasse1()
print Object1.variable1
Run Code Online (Sandbox Code Playgroud)

为什么我会使用第二个(太多的代码)而不是第一个(显然更容易)?在许多网站和教程中,我看到人们为他们可以轻松获得的东西创建对象而不创建它们.

python class object python-3.x

-1
推荐指数
1
解决办法
95
查看次数