property、绑定与非绑定方法

本文介绍了Python中的property特性,它允许将函数访问方式转化为类似数据属性的访问。通过示例展示了property使用前后的区别,使得调用更简洁。接着,文章详细阐述了绑定方法和非绑定方法的概念,解释了它们的区别和调用规则,并提供了不同方法的使用场景。最后,通过实际例子说明了在不同情况下的选择方法。
摘要由CSDN通过智能技术生成

property

property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值;就是把一个函数属性的访问方式变成像访问数据属性的方式一样。

我们首先来看一个对比效果

例一:在调用 bmi 函数的时候需要加括号的,可是我们往往需要另一种调用方法——不想加括号

复制代码

class people():
    def __init__(self, name, height, weight):
        self.name = name
        self.height = height
        self.weight = weight

    def bmi(self):
        return self.weight / (self.height ** 2)


p = people('ysg', 1.8, 75)
print(p.bmi())
# 结果:23.148148148148145

复制代码

例二:使用 property 后,则调用不需要在使用括号了

复制代码

class people():
    def __init__(self, name, height, weight):
        self.name = name
        self.height = height
        self.weight = weight

    @property
    def bmi(self):
        return self.weight / (self.height ** 2)


p = people('ysg', 1.8, 75)
print(p.bmi)
# 结果:23.148148148148145
# 使用加括号调用的会报错:TypeError: 'float' object is not callable

复制代码

 

property 的其他用法,并不常用
前提条件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将 TextBox.TextProperty 绑定到 int 是不可能的,因为 TextBox.TextProperty 是一个字符串类型的依赖属性,而 int 是一个整数类型。你需要使用一个转换器来将字符串转换为整数,然后将其绑定到 int 类型的属性。可以使用 System.Windows.Data.Binding 类来实现数据绑定,并使用 System.Windows.Data.IValueConverter 接口来实现转换器。以下是一个示例转换器代码: ```csharp public class StringToIntConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is string str) { if (int.TryParse(str, out int result)) { return result; } } return 0; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value is int intValue) { return intValue.ToString(); } return "0"; } } ``` 在 XAML 中,你可以这样使用转换器: ```xml <Window xmlns:local="clr-namespace:YourNamespace"> <Window.Resources> <local:StringToIntConverter x:Key="StringToIntConverter" /> </Window.Resources> <StackPanel> <TextBox Text="{Binding MyIntProperty, Converter={StaticResource StringToIntConverter}}" /> </StackPanel> </Window> ``` 这里的 MyIntProperty 是一个 int 类型的属性,你可以将其绑定到 TextBox.TextProperty。使用转换器将字符串转换为整数,然后将其赋值给 MyIntProperty 属性。同时,当用户在 TextBox 中输入整数时,转换器还可以将其转换为字符串并更新到 TextBox 中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值