总结self, parent的用法

  •   self: 本类(是类 不是对象)
  •   parent: 父类
 <?php
 
 
/***
====笔记部分====
在引入自身的静态属性/静态方法
以及父类的方法时,可以用到.
 
用法:
self::$staticProperty
self::staticMothed;
parent::$staticProperty
parent::Mothed;
***/
/*
class Human {
    static public $head = 1;
 
    public function say() {
        echo Human::$head,'<br />';
    }
}
 
 
echo Human::$head,'<br />'; // 1
 
$lisi = new Human();
$lisi->say(); //
*/
// 某一天,类名要统一,规范化. Human不叫Human了,叫cHuman
// 导致类内部,凡引用到自身类名的也要改
 
 
class cHuman {
    static public $head = 1;
 
    public function say() {
        echo self::$head,'<br />';
    }
 
 
}
 
echo cHuman::$head,'<br />'; // 1
 
$lisi = new cHuman();
$lisi->say(); //
 
 
 
class Stu extends cHuman {
    static public $head = 2;
 
    public function say() {
        echo self::$head,'<br />';
        echo '父类只有',parent::$head,'<br />';
    }
 
}
 
$ming = new Stu();
$ming->say(); 
 
 
// ========一位同学的疑问,$this,还用parent====//
class a{
    public function a1(){
    echo 'this is class function a1()';
    }
 
}
class b extends a{
    public function b1(){
        $this->a1();
    }
 
    public function b2(){
        parent::a1();
    }
}
 
$b = new b();
$b->b1();
$b->b2();
 
/*
上面2个调用,显示效果一样的,
如果从速度角度看,理论上parent::稍快一点点.
因为在子类寻找a1方法,寻找不到,再去其父类寻找.
 
但是从面向角度看,继承过来的,就是自己的.
$this 更符合面向的思想.
 
举一个反例
class a {
}
 
class b extends a {
}
 
class c extends b {
}
...
...
 
class f extends e {
    parent::parent::parent::
    总不能这么写吧?
}
没意义。。。
*/
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以在`return_button`的`clicked`信号连接中添加`self.parent().hide()`代码,以在单击“返回”按钮时隐藏父窗口。请注意,这将隐藏父窗口,但不会关闭它。如果您想要关闭父窗口,请将代码更改为`self.parent().close()`。 以下是代码示例: ```python def query(self, sql): # 执行 SQL 查询语句 self.cursor.execute(sql) # 创建一个新窗口,并设置其属性 new_window = QWidget(self) new_window.setWindowTitle("查询员工信息") new_window.setGeometry(200, 200, 400, 300) # 创建返回按钮并设置其属性 return_button = QPushButton("返回", new_window) return_button.clicked.connect(lambda: self.parent().hide()) # 在此处添加 self.parent().hide() 代码 # 获取查询结果并显示在表格中 rows = self.cursor.fetchall() self.table = QTableWidget() if rows: self.table.setRowCount(len(rows)) self.table.setColumnCount(len(rows[0])) for i, row in enumerate(rows): for j, col in enumerate(row): item = QTableWidgetItem(str(col)) self.table.setItem(i, j, item) self.table.setHorizontalHeaderLabels(["部门", "姓名", "性别", '职位', '工号', '状态']) self.table.horizontalHeader().setVisible(True) self.input_box = QLineEdit(new_window) # 修改状态标签的内容 self.status_label.setText("输入需要查询的数据,格式为:部门/姓名/性别/职位/工号/状态,对象") self.v_layout = QVBoxLayout(new_window) self.v_layout.addWidget(self.input_box) # 单个查询按键 query_button = QPushButton("单个查询", new_window) query_button.clicked.connect(lambda: self.query_data(new_window)) # 添加表格、按键到新窗口中 self.v_layout.addWidget(self.table) self.v_layout.addWidget(query_button) self.v_layout.addWidget(return_button) new_window.setLayout(self.v_layout) new_window.show() ``` 在上述代码中,`lambda: self.parent().hide()`表示创建一个匿名函数,该函数在单击“返回”按钮时调用`self.parent().hide()`方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值