我正在尝试将变量作为类的属性,但与此同时,必须在此类的方法中计算该变量。这是我的代码:
class entrepot :
def __init__(self,L_R,L_A,pos_porte,longueur,largeur):
self.L_R=L_R
self.L_A=L_A
self.pos_porte=pos_porte
self.longueur=longueur
self.largeur=largeur
def matrice_expedition(self):
A=np.zeros((longueur,largeur-2))
return (A)
我可以添加A作为属性吗?这听起来像个愚蠢的问题,但我仍然是初学者
答案 0 :(得分:1)
您的意思是这样的吗?
# py2 / py3 compat: inherit from object for py2
# pep08 : class names should be CamelCase
class Entrepot(object):
def __init__(self,L_R,L_A,pos_porte,longueur,largeur):
self.L_R=L_R
self.L_A=L_A
self.pos_porte=pos_porte
self.longueur=longueur
self.largeur=largeur
self.A = self.matrice_expedition()
def matrice_expedition(self):
# Python has no implict `this`, you need to
# use `self.XXX` to access the current instance
# attributes
A = np.zeros((self.longueur,self.largeur-2))
return A
请注意,尽管从技术上讲是合法的,但是这段代码不能确保self.A
与self.longeur
和self.largeur
保持一致,因此,如果这些属性中的任何一个后来发生更改,您可能会遇到一些问题。 / p>
如果初始化后不应更改仓库(入口)的大小,则可以通过将longueur
和largeur
重命名为_longueur
和{{1}来设置_largeur
和longueur
“受保护”属性}(请注意,这只是一个命名约定-不会阻止对这些属性的访问-但这是一个非常强的约定,它告诉您的类的用户,他们不应弄乱这些属性,并且如果这样做的话,则只能靠它们自己来破坏任何东西。)
此外,如果您仍想提供对largeur
和class Entrepot(object):
def __init__(self, L_R, L_A, pos_porte, longueur, largeur):
self.L_R = L_R
self.L_A = L_A
self.pos_porte = pos_porte
self._longueur=longueur
self._largeur=largeur
self.A = self.matrice_expedition()
@property
def longueur(self):
return self._longueur
@property
def largeur(self):
return self._largeur
def matrice_expedition(self):
# ....
的公共读取访问权限,则可以将它们设置为只读属性:
<ng-container *ngFor="let day of days">
<tr
[ngStyle]="{'background-color': day.mydate.getDay() == 0 ? 'green' : 'white' }">
<td>{{day.id}}</td>
<td>{{day.mydate | date:'yyyy-MM-dd' }}</td>
<td>{{day.mydate | date:'EEEE' }}</td>
</tr>
</ng-container>
实际上,您应该只将应该由客户端代码使用的属性和方法公开为“公共”属性(和方法)(可能您也希望将“ self.A”也设置为受保护的属性)< / p>