小编cwa*_*ole的帖子

当有针对它们的getter/setter时访问私有变量

我有一个关于在Python中编程的正确方法的问题......也许可以有几种不同的意见,但在这里:

比方说,我有一个类与一对夫妇的私人属性,并且,我已经实现了两个getter/setter方法(不超载__getattr____setattr__,但在一个更加"Java的tistic"的风格):

class MyClass:

    def __init__(self):   
        self.__private1 = "Whatever1"

    def setPrivate1(self, private1):
        if isinstance(private1, str) and (private1.startswith("private")):
            self.__private1 = private1
        else:
            raise AttributeError("Kaputt")

    def getPrivate1(self):
        return self.__private1
Run Code Online (Sandbox Code Playgroud)

现在让我们说下面几行,在同一个类的另一个方法中,我需要重新设置"_ private1"的值.由于它是同一个类,我仍然可以直接访问private属性self._private1.

我的问题是:我应该使用:

self.setPrivate1("privateBlaBlaBla")
Run Code Online (Sandbox Code Playgroud)

或者我应该直接访问:

self.__private1 ="privateBlaBlaBla"
Run Code Online (Sandbox Code Playgroud)

因为我是设置新值的人,我知道所说的值("privateBlaBlaBla")是正确的(以"私有"开头的str()),所以它不会让系统不一致.另一方面,如果另一个程序员接受我的代码,并且需要更改self .__ private1属性的功能,他将需要遍历所有代码,并查看__private1的值是否已在其他地方手动设置.

我的猜测是正确的做法是始终使用setPrivate1方法,并且只能直接访问get/set中的__private1变量,但我想知道更有经验的Python程序员的意见.

谢谢!

python oop etiquette private-members

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

pg_num_rows错误

我的代码中有错误

) Fatal error: Call to undefined function pg_num_rows() in C:\QG\www\medical-clinic\manip\updateProduit.php on line 49
Call Stack
#   Time    Memory  Function    Location
1   0.0019  386752  {main}( )   ..\updateProduit.php:0
Run Code Online (Sandbox Code Playgroud)

我用的是PHP5 MYSQL这是我原来的代码,我不知道为什么它没有字:

//VERIFICATION SI PRODUIT EXISTE
$query = "
        SELECT  `panier`.`idProduit`
        FROM `panier`, `produit`
        WHERE `Produit`.`nom` = '$nom'
        AND `panier`.`idPanier` = ".$_SESSION["tempPanierSpec"]."
        AND `produit`.`idProduit` =  AND `panier`.`idProduit` 
        ";
$result = mysql_query($query);
$numRows = pg_num_rows($result);  //NOMBRE DE ROW (DONNEES) DANS LA REPONSE

//SI N'EXISTE PAS
if($numRows == 0){
    mysql_query("SELECT `produit`.`idProduit` FROM `produit` WHERE `produit`.`nom` …
Run Code Online (Sandbox Code Playgroud)

php mysql function

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

如何确保PHPUnit中的数组相等?

我正在测试一个网站的下拉菜单,按名称排序.

$nameSort = array();
    $numOfNames = $this->getXpathCount("//td[@class='entry']");
    for($count = 1; $count <= $numOfNames; $count ++) {
        $get = $this->getText("xpath=(//td/a[contains(@href, '')])[$count]");
        array_push($nameSort, $get);
    }
    $test = sort($entrySort);
    $this->assertEquals($entrySort, $test);
Run Code Online (Sandbox Code Playgroud)

但它说"有1次失败:

NameTest::testNameTab true does not match expected type "array".

php selenium phpunit

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

C#表示我的命名空间导致NullReferenceException

所以我得到了可怕的"黄色死亡屏幕"(这就是.NET家伙所说的),并带有错误信息:

[NullReferenceException: Object reference not set to an instance of an object.]

好的,没关系,我可以理解,但错误引用了一行代码,内容如下:

<namespace1>.<namespace2>.XMLDohickey responseXML = 
                                  new <namespace1>.<namespace2>.XMLDohickey();
Run Code Online (Sandbox Code Playgroud)

(名字模糊不清以保护无辜者(:).

我可以很容易地看到后面的行怎么Session[<value>].ToString();可能导致这个错误,但我不明白错误是如何由它声称由它引起的行引起的.

那么,C#是告诉我错误的行号,还是命名空间实际上是空的?

作为旁注 - 这似乎在我公司的DEV和QA服务器上本地工作正常,但似乎它在我们客户的QA服务器上失败了......

编辑


所以...这是交易.

显然,当.NET崩溃时,有时会返回最后一个成功的行,而不是实际持有错误的行.在这种情况下,Session[<value>]为空(为什么?不知道."应该永远不会发生").

c# iis

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

检测此PHP文件中的漏洞

我有这个链接

http://example.com/example.php?link=<link>&title=<title>&bild=<picturelink>&named=<text>

<>中的每个术语代表一个变量,可以由一个卑鄙的攻击者改变.

<named> = domain-name of <link>
Run Code Online (Sandbox Code Playgroud)

这是处理php文件

<?php
if(strpos($_GET[named],"known.com")!==false or 
   strpos($_GET[named],"known2.com")!==false or 
   strpos($_GET[named],"known3.com")!==false)
{
echo '<div align="center"><a href=' . 
     $_GET[link] . 
     ' target="_blank"><img alt="' . 
     htmlentities(utf8_decode($_GET[title])) . 
     '"  title="' . htmlentities(utf8_decode($_GET[title])) . 
     '"  src=' . $_GET[bild] . 
     '  border=0></a></div><br><br><b>' . 
     htmlentities(utf8_decode($_GET[title])) . 
     '</b><br><br><a  href=' . 
     htmlentities($_GET[link]) . 
     ' target="_blank" style="color: grey;">Text <i>' . 
     htmlentities(utf8_decode($_GET[title])) . '</i> text ' . 
     htmlentities($_GET[named]) . '!</a><br>(text)';
}
else
{
echo 'not allowed';
}
?>
Run Code Online (Sandbox Code Playgroud)

怎么能被攻击,你建议对php文件进行哪些更改?

php security xss

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

标签 统计

php ×3

c# ×1

etiquette ×1

function ×1

iis ×1

mysql ×1

oop ×1

phpunit ×1

private-members ×1

python ×1

security ×1

selenium ×1

xss ×1