相关疑难解决方法(0)

变量更改后如何触发另一个对象中的函数。蟒蛇

据我所知,这就像一个观察者模式。场景:一个Center对象保留其所有客户端的列表(队列)。我正在使用Twisted。

  1. 客户端对象之一更改中心对象中的变量,或通知中心更改该变量,
  2. 然后中心对象立即检测到更改
  3. 然后,一旦检测到,中心对象就会调用队列中下一个对象的某些功能
  4. 客户端更改变量后,删除客户端对象中心将处理下一个客户对象。因此,我想这些对象之间没有任何功能链。因此,它与观察者模式有些不同。(如何解决此问题?如果我写错了,请纠正我。)

以下代码仅用于演示:

    class client():
        def change(self):
            self.center.va = 1

        def inqueue(self):
            self.center.queue.enqueue(self)

        def function(self):
            pass

    class center():
        def __init__(self):
            self.queue = None
            self.va = 0

        ####  When the self.va changes, this func will be invoked
        def whenChanged(self):
            next = self.queue.dequeue()
            next.function()
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
2
解决办法
2103
查看次数

模型字段上的 Django 吸气剂

我正在使用Django 2.x

我有一个像

class MyModel(models.Model):
    name = models.CharField()
    balance = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想更改 GET 请求中的 balance 值而不更改数据库中的值。

就像它可能是@Property字段一样,模型看起来像

class MyModel(models.Model):
    name = models.CharField()
    balance = models.IntegerField()

    @property
    def balance(self):
        if balance:
           return balance
        return 0.15 * 50
Run Code Online (Sandbox Code Playgroud)

但不允许重新声明。我该如何解决这个问题?

注意:字段应与ModelAdminDRF Serializer兼容

django django-models

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

如何使用get和set方法创建类?

我想创建一个具有构造函数,带有get和set方法并使用属性的类myCalc。我了解get和set方法,但是在将所有部分组合在一起时遇到了麻烦,因此它可以执行我想要的操作。我到目前为止所拥有的是:

class myCalc(object):

    def __init__(self):
            self._ =name

        def (self):
            """Get the answer doubled."""
            return self._plus

        def (self):
            """Get the answer squared."""
            return self._times
Run Code Online (Sandbox Code Playgroud)

我想让程序响应的对象具有将对象中的数字加倍和平方的属性。任何的意见都将会有帮助。

python methods properties class

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

在python中调用没有括号的函数

我需要在下面的函数computeDifference中做什么修改来获取在控制台中打印的结果,而不是对象消息.

我知道我需要添加括号()来调用函数来获得在控制台中打印的结果,但还有其他方法来打印结果吗?

class Difference1:
    def __init__(self, a):
        self.__elements = a

    def computeDifference(self):
        self.difference =  max(self.__elements)- min(self.__elements)
        return self.difference

a = [5,8,9,22,2]
c = Difference1(a)
print(c.computeDifference)
Run Code Online (Sandbox Code Playgroud)

python oop

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

如何在python中获取对象的属性类型

假设我有以下课程:

class myClass():
    def __init__(self, number):
        self.myStr = "bla"
        self.myInt = number * 3
Run Code Online (Sandbox Code Playgroud)

我如何获得属性类型?我的意思是我想得到以下列表:['str','int']?

我也希望它适用于派生类。

非常感谢 :)

python python-2.7

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

Python 2.7:如何构建getter/setter函数来访问没有继承的类属性?

这可能是一个超级问题,道歉.我正在尝试在PHP中实现一个效果我熟悉PHP,它正在为私有属性构建getter和setter函数.

在PHP中,我通常会这样做:

<?php
class newClass() {
    private $var = null;

    function newClass($initVal) {
        //init
    }

    public function get($var) {
        if ( isset($this->$var) ) {
            return $this->$var;
        }
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

但是,在Python中尝试相同的想法:

class newClass():
    def __init__(self, initVal):
        self.__nameOfVar1 = initVal
        self.__nameOfVar2 = initVal


    def get(self, var):
                #assuming, when called, var = nameOfVar1
        if self.__var:
            return self.__var
Run Code Online (Sandbox Code Playgroud)

引发错误 AttributeError:'newClass' object has no attribute '__var'

而且非常正确,事实并非如此.如何构建getter和setter函数来访问私有属性?


更新:

我已经离开了原来的问题,因为对于Python的新成员来说,了解他们可能会意外提出的其他语言的惯例是有用的.但实际上,我最初的问题有点不同,在尝试使问题更加普遍时,我模糊了我的实际需要.所以这是一个修正案:

事实上,我没有使用私有属性; 事实上,我正在尝试通过组合环境向下传递属性.即:

Class A,作为属性,具有Class B不从中继承的对象Class A.几乎从来没有Class B需要任何信息的情况Class …

php python oop getter getter-setter

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

@property 和 getattr() 有什么区别?

@property、@property.setter 和 getattr()、setattr() 有什么区别。我什么时候会使用它们?如果两者相同,在 python 3.x 中首选使用哪一个?

我是 python 新手,不了解在哪里使用以及如何将它们与 OO python 一起使用

我浏览了很多网站,但不知道该使用哪一个。请给我一些实时的例子。感谢你的帮助。

前任:

获取属性()

class emp: name='Harsh' salary='25000' def show(self): print self.name print self.salary e1 = emp() print getattr(e1,'name') setattr(e1,'height',152 ) @ 财产

P级:

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

@property
def x(self):
    return self.__x

@x.setter
def x(self, x):
    if x < 0:
        self.__x = 0
    elif x > 1000:
        self.__x = 1000
    else:
        self.__x = x
Run Code Online (Sandbox Code Playgroud)

python oop python-3.x

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