据我所知,这就像一个观察者模式。场景:一个Center对象保留其所有客户端的列表(队列)。我正在使用Twisted。
以下代码仅用于演示:
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) 我正在使用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)
但不允许重新声明。我该如何解决这个问题?
注意:字段应与ModelAdmin和DRF Serializer兼容
我想创建一个具有构造函数,带有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)
我想让程序响应的对象具有将对象中的数字加倍和平方的属性。任何的意见都将会有帮助。
我需要在下面的函数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) 假设我有以下课程:
class myClass():
def __init__(self, number):
self.myStr = "bla"
self.myInt = number * 3
Run Code Online (Sandbox Code Playgroud)
我如何获得属性类型?我的意思是我想得到以下列表:['str','int']?
我也希望它适用于派生类。
非常感谢 :)
这可能是一个超级问题,道歉.我正在尝试在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 …
@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 ×6
oop ×3
class ×1
django ×1
getter ×1
methods ×1
php ×1
properties ×1
python-2.7 ×1
python-3.x ×1