谁能解释一下这段代码

时间:2019-08-07 10:45:30

标签: python-3.x

我知道这是一个菜鸟问题,但是我正在学习OOP,无法计算出得到的结果

这是我找到的代码,我可以知道它如何运行吗?

<?php    
global $wpdb;
$table_name = $wpdb->prefix."sheet1";
$sql = "SELECT * FROM ".$table_name." WHERE Course ='Filipino' ORDER BY Lastname";
$results = $wpdb->get_results($sql);
?>
<!-- Data should be appear in this table-->
<table id="passers_table">
<thead>
<tr>
<th><center>Course</center></th>
<th><center>Student Number</center></th>
<th><center>Name</center></th>
<th><center>LinkedIn Account</center></th>
<th><center>Email Address</center></th>
<th><center>Nationality</center></th>
<th><center>City</center></th>
<th><center>Country</center></th>
</tr>
</thead>
<tbody>
<tr>
<?php 
foreach($results as $print){ 
?>
<td><?php echo $print->Course;?></td><br>
<td><?php echo $print->Studno;?></td><br>
<td><?php echo $print->Title.' '.$print->Firstname.' '.$print->Lastname;?></td><br>
<td style="font-style: italic;"><center>PRIVATE</center></td><br>
<td><center><a href="<?php echo $print->Linkedin;?>" target="_blank" rel="noopener 
noreferrer"><u>Click Here</u></a></center></td><br>
<td style="font-style: italic;"><center>PRIVATE</center></td><br>
<td><center><?php echo $print->Email;?></center></td><br>
<td><?php echo $print->Nationality;?></td><br>
<td><?php echo $print->City;?></td><br>
<td><?php echo $print->Country;?></td>
<?php } ?>
</tr>
</tbody>
</table>

1 个答案:

答案 0 :(得分:3)

您有一个名为InstanceCounter的类,该类继承自object。如果使用object,则Python3的继承可以是removed。此类具有属性countvalue以及一些methods(函数-例如set_val)。

现在,您将创建类的三个对象,并将这些值传递到构造函数中,并将value的值设置为51015。您还应在每次构造函数调用时将 static 属性(请参见herecount加1。静态属性与符号Class.Attribute一起使用。

在最后一步中,您遍历三个对象的列表((a, b, c))并将此对象的每个存储在对象obj中,因此obj将代表{{1} },然后依次为ab。因此,您可以调用此对象的方法,因为对象c的类型为obj,因此InstanceCounter包含相同的方法和属性。

通过我对您的代码进行重新整理的方式,使它更易于理解并使用obj语法。

Python3

这将导致以下输出:

class InstanceCounter:
    count = 0

    def __init__(self, val):
        self.val = val
        InstanceCounter.count += 1

    def set_val(self, newval):
        self.val = newval

    def get_val(self):
        return self.val

    def get_count(self):
        return InstanceCounter.count

a = InstanceCounter(5)
print("Count : {}".format(a.get_count()))
b = InstanceCounter(10)
print("Count : {}".format(b.get_count()))
c = InstanceCounter(15)
print("Count : {}".format(c.get_count()))

for obj in (a, b, c):
    print("value of obj: {}".format(obj.get_val()))
    print("Count : {}".format(obj.get_count()))

为了更好地理解静态属性:

因此,如果您有三个类型为Count : 1 Count : 2 Count : 3 value of obj: 5 Count : 3 value of obj: 10 Count : 3 value of obj: 15 Count : 3 的对象,则您拥有名称为InstanceCounter三个不同属性,因为类型为val的每个对象都包含一个属性{{ 1}}-一个InstanceCounter一个相同的属性,名称为val-一个instance attribute

  • count是类class attribute的{​​{1}}。这个 属性对于所有类型的对象具有相同的值 count。与class attribute一起使用-例如InstanceCounter
  • InstanceCounterClassname.Attributename,因为类InstanceCounter.count的每个 instance 都有自己的价值。与val一起使用-例如instance attribute

有关更多信息,请参见here